gpt4 book ai didi

python - 更新/合并 2 个具有不同列名的数据框

转载 作者:行者123 更新时间:2023-12-01 00:44:53 26 4
gpt4 key购买 nike

我正在使用 pandas 的数据框,并且有 2 个表:第一个:

+----------------------------+
| ID | Code | Name | Desc |
------------------------------
| 00002 | AAAA | Aaaa | A111 |
------------------------------
| 12345 | BBBB | Bbbb | B222 |
------------------------------
| 01024 | EEEE | Eeee | E333 |
------------------------------
| 00010 | CCCC | Cccc | C444 |
------------------------------
| 00123 | ZZZZ | Zzzz | Z555 |
------------------------------
| ..... | .... | .... | .... |
+----------------------------+

第二个表:

+--------------------------------+
| EID | Cat | emaN | No | cseD |
----------------------------------
| 00010 | 1 | | | |
----------------------------------
| 12345 | 1 | | | |
----------------------------------
| | 1 | | | |
+--------------------------------+

我想用第一个表中的值更新第二个表,结果是:

+--------------------------------+
| EID | Cat | emaN | No | cseD |
----------------------------------
| 00010 | 1 | Сссс | | С444 |
----------------------------------
| 12345 | 1 | Bbbb | | B222 |
----------------------------------
| | 1 | | | |
+--------------------------------+

但难点在于列名不同,键 ID -> EID 和值 Name -> emaN,Desc -> cseD,以及列 Cat(值最初填充)和 No (空值)必须在输出表中保持不变。此外,在第二个表中可能存在空 EID,因此该条目应保持原样。

如何进行这样的更新或合并?

谢谢。

最佳答案

尝试pd.merge使用 right_onleft_on 参数,以防您必须合并的列名称不同。

我正在应用检查final_df['emaN']是否为空,然后从代码中复制值。

然后删除df1中不需要的列

我已将结果保存在新的 df final_df 中,如果您愿意,可以将数据保存在“df2”中

import numpy as np
import pandas as pd

final_df = pd.merge(df2,df1,left_on='EID' ,right_on='ID',how='left')
final_df['emaN'] = np.where(final_df['emaN'].isnull(),final_df['Code'],final_df['emaN'])
final_df['cseD'] = np.where(final_df['cseD'].isnull(),final_df['Desc'],final_df['cseD'])

final_df.drop(['ID','Code','Name','Desc'],axis=1,inplace=True)

关于python - 更新/合并 2 个具有不同列名的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57056612/

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