4 回答

TA貢獻1864條經驗 獲得超6個贊
您可以將元組列表轉換為字典并使用map它:
b = [(11, 3), (22, 1), (33, 4), (44, 4), (55, 7), (66, 2)]
df["b"] = df["cid"].map(dict(b))
print(df)
cid pos b
0 11 29 3
1 22 29 1
2 22 29 1
3 33 29 4
4 44 29 4

TA貢獻1802條經驗 獲得超4個贊
嘗試:
# Toy dataframe
df = pd.DataFrame({"cid":[11,22,22,33,44],"pos":[29,29,29,29,29]})
lista = [(11, 3), (22, 1), (33, 4), (44, 4), (55, 7), (66, 2)]
# Solution:
df.merge(pd.DataFrame(lista, columns = ["cid", "new_pos"]), on = "cid")
輸出:

TA貢獻1854條經驗 獲得超8個贊
我們可以從您的元組創建第二個數據框,然后使用 panda 的許多合并函數之一,我們可以從元組中獲取第二個元素。
讓我們map在這個例子中使用:
t = [(11, 3), (22, 1), (33, 4), (44, 4), (55, 7), (66, 2)]
df['new_pos'] = df['cid'].map(pd.DataFrame(t,columns=['cid','pos']).set_index('cid')['pos'])
cid pos new_pos
0 11 29 3
1 22 29 1
2 22 29 1
3 33 29 4
4 44 29 4
分解一下:
pd.DataFrame(t,columns=['cid','pos']).set_index('cid')['pos']
產量:
cid
11 3
22 1
33 4
44 4
55 7
66 2
Name: pos, dtype: int64
map在列上使用將cid數據幀中的實例與元組匹配,并返回所選的列值,在本例中為pos。

TA貢獻1946條經驗 獲得超3個贊
我投票將 tuokes 列表放入第二個數據幀,然后進行左合并:
df1 = pd.DataFrame([{'cid': 11, 'pos': 29},
{'cid': 22, 'pos': 29},
{'cid': 22, 'pos': 29},
{'cid': 33, 'pos': 29},
{'cid': 44, 'pos': 29}])
df2 = pd.DataFrame([(11, 3), (22, 1), (33, 4), (44, 4),
(55, 7), (66, 2)], columns=['cid', 'new_pos'])
df3 = pd.merge(df1, df2, how='left', on='cid')
- 4 回答
- 0 關注
- 258 瀏覽
添加回答
舉報