我想合并兩個資料框。但是當我執行以下操作時,我得到了KeyError: "['available'] not in index". 我看著Python Pandas 只合并某些列。但我做錯了什么?
d = { 'listing_id': [1,2,3,4],
'month': [1, 2, 3, 4],
'price': [79.00, 80.00, 90.00, 20.00]}
df = pd.DataFrame(data=d)
d2 = {'id': [1, 2, 3, 4],
'available': [5000, 8000,5000, 7000],
'someotherstuff': [2,3,4,5]}
df2 = pd.DataFrame(data=d2)
df = pd.merge(df,df2[['id','available']],on='listing_id', how='left')
What I want
listing_id month price available
0 1 1 79.0 5000
1 2 2 80.0 8000
2 3 3 90.0 5000
3 4 4 20.0 7000
uj5u.com熱心網友回復:
你告訴熊貓合并,on = 'listing_id'但沒有listing_idin df2。
更改id為listing_id,這應該可以作業。此外,無需指定要合并的列(無需df2[['id','available']].
d = { 'listing_id': [1,2,3,4],
'month': [1, 2, 3, 4],
'price': [79.00, 80.00, 90.00, 20.00]}
df = pd.DataFrame(data=d)
print(df['listing_id'])
d2 = {'listing_id': [1, 2, 3, 4],
'available ': [5000, 8000,5000, 7000]}
df2 = pd.DataFrame(data=d2)
df = pd.merge(df,df2,on = 'listing_id', how='left')
print(df)
輸出:
Name: listing_id, dtype: int64
listing_id month price available
0 1 1 79.0 5000
1 2 2 80.0 8000
2 3 3 90.0 5000
3 4 4 20.0 7000
uj5u.com熱心網友回復:
您的解決方案將不起作用,因為您的 ID 列具有不同的名稱。嘗試這個:
df = pd.merge(df, df2, left_on='listing_id', right_on='id')
uj5u.com熱心網友回復:
首先,您的 column 中有一個額外的空間available,以便strip退出。
df2.columns
Out[10]: Index(['id', 'available '], dtype='object')
df2.columns = [col.strip() for col in df2.columns]
Out[15]: Index(['id', 'available'], dtype='object')
然后,您希望合并發生的列在兩個資料框中的呼叫方式不同,因此您需要在命令中指定left_on = 和:right_on = merge
pd.merge(df,df2[['id','available']],left_on='listing_id', right_on = 'id',how='left').drop('id',axis=1)
listing_id month price available
0 1 1 79.0 5000
1 2 2 80.0 8000
2 3 3 90.0 5000
3 4 4 20.0 7000
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/347397.html
