我有以下陳述句,if col1="string1" and col2="string3"然后newcol="newstring",如果col1="stringX",col2="stringY"然后newcol="newstringZ",我如何將它構建到字典中,以便我可以應用 map 函式來使用字典來檢查和插入資料框的新列?
df = pd.DataFrame(
{
'col1': ['string1', 'string1', 'string3', 'stringX',
'','stringX'],
'col2': ["stringY","string3","stringY",np.nan,"stringY","stringY"]
}
)
應用地圖功能后,最終結果應該是這樣的

uj5u.com熱心網友回復:
讓我們將“合并”與資料幀建構式一起使用:
dict_map = {'col1':['string1','stringX'], 'col2':['string3', 'stringY'], 'newcol':['newstring', 'newstringZ']}
df_map = pd.DataFrame(dict_map)
df.merge(df_map, how='left')
輸出:
col1 col2 newcol
0 string1 stringY NaN
1 string1 string3 newstring
2 string3 stringY NaN
3 stringX NaN NaN
4 stringY NaN
5 stringX stringY newstringZ
uj5u.com熱心網友回復:
一個簡單的方法是使用 np.select
df['newcol'] = np.select([df['col1'].eq('string1') & df['col2'].eq('string3'),
df['col1'].eq('stringX') & df['col2'].eq('stringY')],
choicelist=['newstring', 'newstringZ'], default='')
輸出結果:
>>> df
col1 col2 newcol
0 string1 stringY
1 string1 string3 newstring
2 string3 stringY
3 stringX NaN
4 stringY
5 stringX stringY newstringZ
uj5u.com熱心網友回復:
沒有辦法將代碼放入字典并為代碼應用地圖功能。最接近的就是將測驗列對應的資料(而不是代碼)放入字典中,并對這些資料應用映射函式。
您可以使用 ( col1, col2)元組設定字典作為鍵和值newcol作為值。然后,將col1,col2作為元組(復合鍵)按.apply()on axis=1。然后使用.map()函式進行映射,如下:
mapper = {('string1', 'string3') : 'newstring',
('stringX', 'stringY') : 'newstringZ'}
df['newcol'] = df[['col1', 'col2']].apply(tuple, axis=1).map(mapper)
結果:
print(df)
col1 col2 newcol
0 string1 stringY NaN
1 string1 string3 newstring
2 string3 stringY NaN
3 stringX NaN NaN
4 stringY NaN
5 stringX stringY newstringZ
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331170.html
上一篇:如何將每行中的串列類值轉換為python資料幀中的純值?
下一篇:給出表示作為函式的引數
