我有兩個資料框(Excel 表),我只想從結果中選擇某些列 pd.merge
df1 = pd.read_excel('Receivables.xlsx')
#the sheet looks like the table below
| ID | 美元型別 | 第一季度 | 第二季度 | 第三季度 | 第四季度 |
|---|---|---|---|---|---|
| 1 | 應收賬款 | 10 | 20 | 30 | 44 |
| 2 | 應收賬款 | 11 | 21 | 41 | 54 |
df2 = pd.read_excel('Payables.xlsx')
#the sheet looks like the table below
| Payable_ID | 美元型別 | 第一季度 | 第二季度 | 第三季度 | 第四季度 |
|---|---|---|---|---|---|
| 1 | 應付賬款 | 10 | -20 | -30 | -44 |
| 2 | 應付賬款 | 11 | -21 | -41 | -54 |
我的合并看起來像這樣
leftJoin = df1.merge(df2, left_on=['ID'], right_on=['Payable_ID'], how='left')
如何 僅從df2.x中選擇列、、、、、和 選擇Dollar Type、、我遇到的問題是重復的列附加了 _x 或 _y。雖然我明白為什么要這樣做,但有沒有辦法關閉這個附加功能?Q1Q2Q3Q4df1Payable_IDQ1Q2
在 SQL 中,我無需指定,例如 df1.[Dollar Type_x] 或 df2.[??Q1_y]
SELECT DF1.[DOLLAR TYPE],
DF1.[Q1],
DF1.[Q2],
DF1.[Q3],
DF1.[Q4],
DF2.[PAYABLE_ID],
DF2.[Q1],
DF2.[Q2]
FROM DF1 LEFT JOIN DF2 ON DF1.ID = DF.PAYABLE_ID
uj5u.com熱心網友回復:
您只能將 DataFrames 的選定列傳遞給合并:
leftJoin = df1[['ID','Dollar Type','Q1','Q2','Q3','Q4']].merge(df2[['Payable_ID','Q1','Q2']], left_on=['ID'], right_on=['Payable_ID'], how='left')
現在,您在合并的 DataFrame 中有不需要的“ID”列,您可以使用它洗掉
leftJoin.drop(columns=['ID'], inplace=True)
您還可以通過合并使 drop 行內:
leftJoin = df1[['ID','Dollar Type','Q1','Q2','Q3','Q4']].merge(df2[['Payable_ID','Q1','Q2']], left_on=['ID'], right_on=['Payable_ID'], how='left').drop(columns=['ID'], inplace=True)
要更改列的名稱,可以使用 rename:
leftJoin.rename(columns={'Q1_x':'Q1', 'Q2_x':'Q2','Q1_y':'Q5','Q2_y':'Q6'}, inplace=True)
這又可以在同一行中完成:
leftJoin = df1[['ID','Dollar Type','Q1','Q2','Q3','Q4']].merge(df2[['Payable_ID','Q1','Q2']], left_on=['ID'], right_on=['Payable_ID'], how='left').drop(columns=['ID'], inplace=True).rename(columns={'Q1_x':'Q1', 'Q2_x':'Q2','Q1_y':'Q5','Q2_y':'Q6'}, inplace=True)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/414800.html
標籤:
上一篇:如何從RGB值創建熱圖?
下一篇:計算熊貓資料框中定義組中的元素
