假设我有一个名为' 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
答案 0 :(得分:2)
如果要用条件替换值,可以一步完成,即指定行和列条件并分配值,并且可以避免将新数据框与原始数据框合并:
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.Y
进行修改后将new_df
分配回df:
df.loc[(df['X'] == -3) | (df['X'] == 9), "Y"] = new_df.Y
甚至:
df.loc[(df['X'] == -3) | (df['X'] == 9)] = new_df