如何使用索引替换特定列中的行值?

时间:2020-09-17 16:20:56

标签: python pandas dataframe

我有以下数据帧,

数据帧-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值,而是希望这些值保持原样。 (我的意思是仅应针对该特定索引值进行更改。)

请让我知道解决方法。

谢谢!

2 个答案:

答案 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']