我正在尋找熊貓資料框中“查找”功能的替代方法。
我看過幾個例子,包括這個檔案,但我不能自己應用它。
我有 2 個資料幀,如下所述。
一種
| name |
| ---- |
|foo |
|bar |
|hello |
|world |
乙
|keyword|frequency|
| ----- |---------|
|hello | 3 |
|foo | 10 |
我想在A像這樣
的資料框上添加一個新列A
| name |frequency|
| ---- |---------|
|foo |10 |
|bar |0 |
|hello |3 |
|world |0 |
如您所見,如果A資料框name列的值在B資料框keyword列中,則從同一行添加頻率。
如果它不存在,只需添加0.
我可以用 for 回圈來實作這一點,但這看起來不太好,而且速度也很慢。
有沒有優雅有效的方法來做到這一點?(如果可能的話,我希望利用 pands 的矢量化)
謝謝。
uj5u.com熱心網友回復:
如果需要添加一個或多個列使用DataFrame.merge與rename和DataFrame.fillna
df = df1.merge(df2.rename(columns={'keyword': 'name'}), how='left').fillna(0)
print (df)
name frequency
0 foo 10.0
1 bar 0.0
2 hello 3.0
3 world 0.0
或者,如果只需要添加一對使用Series.map有Series.fillna:
df1['frequency'] = (df1['name'].map(df2.set_index('keyword')['frequency'])
.fillna(0, downcast='int'))
print (df1)
name frequency
0 foo 10
1 bar 0
2 hello 3
3 world 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/370819.html
上一篇:將一個資料框串列分成多個資料框
