上下文
我正在尝试将两个大型CSV文件合并在一起。
问题
假设我有一个熊猫数据框,如下所示…
EntityNum foo ...
------------------------
1001.01 100
1002.02 50
1003.03 200
还有一个像这样的。。。
EntityNum a_col b_col
-----------------------------------
1001.01 alice 7
1002.02 bob 8
1003.03 777 9
我想像这样加入他们:
EntityNum foo a_col
----------------------------
1001.01 100 alice
1002.02 50 bob
1003.03 200 777
所以请记住,我不希望在最后的结果中出现错误。我怎样才能和熊猫一起完成这个任务?
使用SQL,我可能应该做如下事情:
SELECT t1.*, t2.a_col FROM table_1 as t1
LEFT JOIN table_2 as t2
ON t1.EntityNum = t2.EntityNum;
搜索
我知道使用merge是可能的。这就是我尝试过的:
import pandas as pd
df_a = pd.read_csv(path_a, sep=',')
df_b = pd.read_csv(path_b, sep=',')
df_c = pd.merge(df_a, df_b, on='EntityNumber')
但是,当谈到在最终数据帧中避免一些不需要的列时,我陷入了困境。
最佳答案
您可以首先通过相关数据框列的标签(例如df_a[['EntityNum', 'foo']]
访问这些列,然后加入这些列。
df_a[['EntityNum', 'foo']].merge(df_b[['EntityNum', 'a_col']], on='EntityNum', how='left')
注意
merge
的默认行为是进行内部连接。