我有以下数据帧,
数据帧-1(命名为df1)
index A B C
1 q a w
2 e d q
3 r f r
4 t g t
5 y j o
6 i k p
7 j w k
8 i o u
9 a p v
10 o l a
数据帧2(命名为df2)
index C
3 a
7 b
9 c
10 d
我尝试使用数据框-2代替数据框-1来替换“ C”列中特定索引的行,但是在使用以下代码后得到了以下结果:
df1['C'] = df2
输出:
index A B C
1 q a NaN
2 e d NaN
3 r f a
4 t g NaN
5 y j NaN
6 i k NaN
7 j w b
8 i o NaN
9 a p c
10 o l d
但是我想要这样的东西,
预期输出:
index A B C
1 q a w
2 e d q
3 r f a
4 t g t
5 y j o
6 i k p
7 j w b
8 i o u
9 a p c
10 o l d
因此,很明显,我不需要“ C”列中的NaN值,而是希望这些值保持原样。 (我的意思是仅应针对该特定索引值进行更改。)
请让我知道解决方法。
谢谢!
答案 0 :(得分:2)
假设index
是实际的索引列,我们可以执行loc
:
df1.loc[df2.index, 'C'] = df2['C']
或更简单的方法是:
df1.update(df2)
输出:
A B C
index
1 q a w
2 e d q
3 r f a
4 t g t
5 y j o
6 i k p
7 j w b
8 i o u
9 a p c
10 o l d
答案 1 :(得分:1)
尝试一下
for idx, row in df2.iterrows():
df1.at[idx, 'C'] = row['C']