我正在嘗試合并兩個數據框。我想在合并一列,那就是指數的第二數據幀和一列,這是一個的列在第二個數據幀。兩個 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))
添加回答
舉報
0/150
提交
取消