Pandas如何用另一个DataFrame替换DataFrame中的行

5
我有一个pandas数据帧,想要使用两个条件索引子集行,然后用我创建的新数据帧替换该子集。但是如下所示,它只替换具有相同索引的行。如何使数据框的索引对齐,以便替换所有行都能生效?
df = pd.DataFrame({'A': [-4, 9, 6, -3],
                   'B': ['y', 'b', 'b','x']})

df
Out[581]: 
   A  B
0 -4  y
1  9  b
2  6  b
3 -3  x

replacement = pd.DataFrame({'A':[-7, -4], 'B':['y','x']})

replacement
Out[583]: 
   A  B
0 -7  y
1 -4  x

df.loc[(df['A']>0) & (df['B']=='b')] = replacement

df
Out[585]: 
     A    B
0 -4.0    y
1 -4.0    x
2  NaN  NaN
3 -3.0    x

df.loc[(df['A']>0) & (df['B']=='b')] = replacement.to_numpy() - anky
>>> df.loc[(df['A']>0) & (df['B']=='b')] = replacement.values - Dishin H Goyani
1个回答

4

根据我的理解,您想要

>>> df.loc[(df['A']>0) & (df['B']=='b')] = replacement.values
>>> df
   A  B
0 -4  y
1 -7  y
2 -4  x
3 -3  x

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接