python - 更新/合并具有不同列名的 2 个数据文件
问题描述
我正在使用 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 | | | |
+--------------------------------+
但难点在于列名不同,key ID -> EID 和值Name -> emaN, Desc -> cseD,列Cat(初始填值)和No(空值) 必须在输出表中保持不变。在第二张表中也可以有空的 EID,所以这个条目应该保持原样。
怎么可能进行这样的更新或合并?
谢谢。
解决方案
尝试使用 r ight_on和left_on参数的pd.merge ,以防您必须合并的列名称不同。
我正在应用检查 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)
推荐阅读
- javascript - 如果它与另一个字符串匹配,如何使 JavaScript 更改字符串?
- python-3.x - 一个excel表格列表,我如何组合成一个单行字符串
- firebase - 如何解决它“RangeError(索引):无效值:有效值范围为空:0”在颤动中?
- c++ - 如何通过程序添加到 QAT 。程序使用c++、mfc mdi
- javascript - Laravel 和 Vuetify 未知的自定义元素
- sqlite - 加快 SQLite 中的 COUNT DISTINCT 查询
- http - 如何使用 Wireshark 访问网站?
- java - android java从内部类访问,需要声明final
- python - 从单个 Txt 文件创建多个音频文件
- java - 使用 Java 高级 REST 客户端的 ElasticSearch 多词查询