gpt4 book ai didi

python - 如何在 pandas DataFrame 中添加*或*更新列?

转载 作者:行者123 更新时间:2023-11-30 22:04:28 26 4
gpt4 key购买 nike

我有一个现有的 DataFrame,以及一个计算要添加到该 DataFrame 的几列的方法。我目前使用 pd.concat([left, right], axis=1)。然而,当我第二次调用此方法时,它会再次添加列(具有相同的名称)。

使用以下示例数据框leftright:

left = pd.DataFrame({'one': [1, 2, 3], 'two': [2, 3, 4]})
print(left)

one two
0 1 2
1 2 3
2 3 4

right = pd.DataFrame({'one': [22, 22, 22], 'NEW': [33, 33, 33]})
print(right)

one NEW
0 22 33
1 22 33
2 22 33

我正在寻找一个 foo 方法,其结果如下:

left = left.foo(right)  # or foo(left, right)
print(left)

one two NEW
0 22 2 33
1 22 3 33
2 22 4 33

而且,重要的是,如果我第二次调用 left.foo(right),我希望结果保持不变。

当列已存在时

pd.join 会引发错误,pd.concat 不会覆盖现有列,仅 pd.update覆盖现有列,但不添加新列。

是否有一种函数/方法可以完成我想要的操作,或者我必须自己编写一个函数/方法?

<小时/>

解决方案:结合以下两个答案,对我有用的解决方案是:

result = left.\
drop(left.columns.intersection(right.columns), axis=1).\
join(right)

最佳答案

intersectiondrop然后列 merge索引上:

left = left.drop(left.columns.intersection(right.columns),1).merge(right, left_index=True, right_index=True)

print(left)
two one NEW
0 2 22 33
1 3 22 33
2 4 22 33

关于python - 如何在 pandas DataFrame 中添加*或*更新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53276162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com