sno*_*ogg 5 python sql csv left-join pandas
我正在尝试将两个大的 CSV 文件合并在一起。
假设我有一个 Pandas DataFrame,如下所示......
EntityNum foo ...
------------------------
1001.01 100
1002.02 50
1003.03 200
Run Code Online (Sandbox Code Playgroud)
还有一个这样的……
EntityNum a_col b_col
-----------------------------------
1001.01 alice 7
1002.02 bob 8
1003.03 777 9
Run Code Online (Sandbox Code Playgroud)
我想像这样加入他们:
EntityNum foo a_col
----------------------------
1001.01 100 alice
1002.02 50 bob
1003.03 200 777
Run Code Online (Sandbox Code Playgroud)
所以请记住,我不希望 b_col 出现在最终结果中。II 如何用 Pandas 实现这一点?
使用 SQL,我可能应该这样做:
SELECT t1.*, t2.a_col FROM table_1 as t1
LEFT JOIN table_2 as t2
ON t1.EntityNum = t2.EntityNum;
Run Code Online (Sandbox Code Playgroud)
我知道可以使用合并。这是我尝试过的:
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')
Run Code Online (Sandbox Code Playgroud)
但是在避免最终数据框中的一些不需要的列时,我陷入了困境。
Ale*_*der 11
您可以首先通过标签访问相关的数据框列(例如df_a[['EntityNum', 'foo']],然后加入这些列。
df_a[['EntityNum', 'foo']].merge(df_b[['EntityNum', 'a_col']], on='EntityNum', how='left')
Run Code Online (Sandbox Code Playgroud)
请注意, for 的默认行为merge是进行内部联接。