python - 将新计算合并回原始 pandas 数据框中

标签 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

最佳答案

如果想用条件替换值,可以一步完成,即指定行列条件并赋值,这样就可以避免将新数据框与原始数据框合并:

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/

相关文章:

Python Pandas 将 Dataframe 列向下移动到行中(重置列上的索引?)

python Dataframe 与过滤器的差异在一行中

python - 将 HTML 标签删除应用于 Pandas 列

Python Pandas 科学记数法不一致

python - 练习7.2 : Think Python

python - 循环字典以创建新的 Pandas 列的最快 Pythonic 方法

python - 使用Python获取日期字符串的最佳方法

python - 如何为 Pandas 数据框中的每一行文本用空格填充所有标点符号?

python - 我已经设置了模板目录,但仍然有错误

python - Flask:创建在多个请求中保留的对象