我试图将两个大的CSV文件合并在一起。
让我们说我有一个像以下一样的Pandas DataFrame ...
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
所以请记住,我不想在最终结果中使用b_col。我如何通过熊猫实现这一目标?
使用SQL,我应该做的事情如下:
SELECT t1.*, t2.a_col FROM table_1 as t1
LEFT JOIN table_2 as t2
ON t1.EntityNum = t2.EntityNum;
我知道可以使用合并。这就是我尝试过的:
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')
但是,在最终数据框中避免使用某些不需要的列时,我会陷入困境。
答案 0 :(得分:4)
您可以先通过标签访问相关的数据框列(例如df_a[['EntityNum', 'foo']]
,然后加入这些列。
df_a[['EntityNum', 'foo']].merge(df_b[['EntityNum', 'a_col']], on='EntityNum', how='left')
请注意merge
的默认行为是进行内部联接。
答案 1 :(得分:0)
注意在SQL中,首先进行连接,然后选择所需的列。本着同样的精神,您可以在Pandas中完全加入,然后选择想要的列。
或者,执行完全加入和del
您不想要的列。
最后,您可以先选择您的列,然后再进行连接。