gpt4 book ai didi

python - 根据匹配值从不同的 Dataframe 更新 Dataframe

转载 作者:行者123 更新时间:2023-12-04 01:02:51 26 4
gpt4 key购买 nike

我有两个数据框,DF1(33, 92) 和 DF2(11, 18),我想根据两个 DF 中列名“ID”的匹配值将 DF2 18 列复制到 DF1,这 18列在两个数据框中具有相同的名称。

我使用了以下合并:finaldf = pd.merge(DF1, DF2, on = 'ID', how ='left')

除了它更改了 DF1 中的 18 列名称并添加了另外 18 列之外,这工作正常。所以最终的数据框形状是 (33, 109) 而它应该具有 DF1 形状 (33, 92) 但具有更新的行。

最佳答案

合并后的 finaldf 形状为 (33, 109),因为它具有名称相似但附加了 _x_y 的列。 _x 来自DF1_y 来自DF2

您需要在合并后运行以下代码以删除这 18 个额外的“_x”和“_y”列,并将值从 DF2 复制到 DF1,其中他们匹配“ID”:

remove_cols = []

for col in DF2.columns:
if col == 'ID':
continue
finaldf[col] = finaldf[col+'_y'].fillna(finaldf[col+'_x'])
remove_cols += [col+'_x', col+'_y']

finaldf.drop(remove_cols, axis=1, inplace=True)

有关“_x”和“_y”列为何出现在您的合并数据框中的更多信息,我建议您查看官方 documentation pd.DataFrame.merge 方法一次。“_x”和“_y”是合并操作默认添加的后缀,用于区分具有相似名称的列。


或者:

pd.DataFrame.update 是 pandas 中的一种方法,用于实现您正在尝试做的事情。

检查一下 here .但是使用它有一个注意事项,那就是如果您在 DF2 中有 NaN 值并希望复制到 DF1,那么它不会这样做。它只会更新 non-NA 值:

Modify in place using non-NA values from another DataFrame.

关于python - 根据匹配值从不同的 Dataframe 更新 Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67666605/

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