合并原始pandas数据帧中的新计算

时间:2016-12-10 02:06:47

标签: python pandas

假设我有一个名为' 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

1 个答案:

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