如何用 pandas 中的另一个数据框列替换子集列?

How to replace a subset column with another dataframe column in pandas?

已经有人问过这个问题,但我以正确的方式尝试了它,但不知何故我得到了意想不到的结果。

我有两个数据框 datadky 有很多列。

代码,

data.loc[(data['source'] == 'DKY_2016'), 'seconds']

returns:

1147    22.80
1154    44.90
1160    45.00
1161    58.35
1162     2.45

我想用 dky['seconds'] 替换上述列,其中包含:

0     41.22
1     22.80
2     44.90
3     45.00
4     58.35

我尝试了以下代码 data.loc[(data['source'] == 'DKY_2016'), 'seconds'] = dky['seconds']

但它只给出 NaN 作为输出列

1147   NaN
1154   NaN
1160   NaN
1161   NaN
1162   NaN

我这里做错了什么?

这是因为索引。如您所见,dky['seconds'] 的索引为 0 1 2 3 4。另一方面,data.loc[(data['source'] == 'DKY_2016'), 'seconds'] 的索引为 1147 1154 1160 1161 1162。由于这两个不同,pandas 不会将一个分配给另一个。

相反,您需要先将要分配的数据转换为列表,这样它就没有索引:

data.loc[(data['source'] == 'DKY_2016'), 'seconds'] = dky['seconds'].values.tolist()