亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Pandas DataFrame:如何在索引和列的組合上向左與第二個 DataFrame 合并

Pandas DataFrame:如何在索引和列的組合上向左與第二個 DataFrame 合并

HUWWW 2021-06-30 17:16:30
我正在嘗試合并兩個數據框。我想在合并一列,那就是指數的第二數據幀和一列,這是一個的列在第二個數據幀。兩個 DataFrame 中的列/索引名稱不同。例子:import pandas as pddf2 = pd.DataFrame([(i,'ABCDEFGHJKL'[j], i*2 + j)                     for i in range(10)                     for j in range(10)],                    columns = ['Index','Sub','Value']).set_index('Index')df1 = pd.DataFrame([['SOMEKEY-A',0,'A','MORE'],                    ['SOMEKEY-B',4,'C','MORE'],                    ['SOMEKEY-C',7,'A','MORE'],                    ['SOMEKEY-D',5,'Z','MORE']                   ], columns=['key', 'Ext. Index', 'Ext. Sub', 'Description']                  ).set_index('key')df1 打印出來key Ext. Index  Ext. Sub    DescriptionSOMEKEY-A   0   A   MORESOMEKEY-B   4   C   MORESOMEKEY-C   7   A   MORESOMEKEY-D   5   Z   MOREdf2 的第一行是Index   Sub Value0   A   00   B   10   C   20   D   30   E   4我想將“Ext.Index”和“Ext.Sub”與DataFrame df2合并,其中索引是“Index”,列是“Sub”該預期的結果是:key Ext. Index  Ext. Sub    Description Ext. ValueSOMEKEY-A   0   A   MORE    0SOMEKEY-B   4   C   MORE    10SOMEKEY-C   7   A   MORE    14SOMEKEY-D   5   Z   MORE    None手動,合并是這樣工作的def get_value(x):    try:        return df2[(df2.Sub == x['Ext. Sub']) &                    (df2.index == x['Ext. Index'])]['Value'].iloc[0]    except IndexError:        return Nonedf1['Ext. Value'] = df1.apply(get_value, axis = 1)我可以使用 apd.merge或pd.concat命令執行此操作,而無需通過將 df2.index 轉換為列來更改 df2 嗎?
查看完整描述

1 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

嘗試使用:


df_new = (df1.merge(df2[['Sub', 'Value']],

                    how='left',

                    left_on=['Ext. Index', 'Ext. Sub'],

                    right_on=[df2.index, 'Sub'])

          .set_index(df1.index)

          .drop('Sub', axis=1))


查看完整回答
反對 回復 2021-07-06
  • 1 回答
  • 0 關注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號