假设我有一个名为“df”的 Pandas 数据框,如下所示:
X Y Z
0 -3 6 -7
1 -4 -10 -1
2 9 -10 -9
3 5 0 -8
4 -2 1 -8
我想用 df 中的一些行创建一个新框架:
new_df = df.loc[(df['X'] == -3) & (df['X'] == 9)]
然后我修改新的数据框:
new_df.Y = 150
有没有一种简单的方法可以将新数据框插入旧框架中,仅替换我在新框架中修改的那些值?
所以最后,我会得到原来的“df”,它看起来像这样:
X Y Z
0 -3 150 -7
1 -4 -10 -1
2 9 -150 -9
3 5 0 -8
4 -2 1 -8
最佳答案
如果想用条件替换值,可以一步完成,即指定行列条件并赋值,这样就可以避免将新数据框与原始数据框合并:
df.loc[(df['X'] == -3) | (df['X'] == 9), "Y"] = 150
# I assume you mean or instead of and from your result
df
# X Y Z
#0 -3 150 -7
#1 -4 -10 -1
#2 9 150 -9
#3 5 0 -8
#4 -2 1 -8
只要不修改new_df
的索引,就可以在修改new_df<后将
:new_df.Y
重新赋值给df/
df.loc[(df['X'] == -3) | (df['X'] == 9), "Y"] = new_df.Y
或者甚至:
df.loc[(df['X'] == -3) | (df['X'] == 9)] = new_df
关于python - 将新计算合并回原始 pandas 数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41071446/