我在下面有以下代碼。
我正在嘗試執行映射,其中資料框列“咖啡因”中的值 0 被“否”替換,除 0 之外的任何其他值都被“是”替換。
但是,在下面的命令中,非 0 的值被替換為 'NaN' 而不是 'yes'。
非常感謝您的幫助!
newerdf = newdf.copy()
newerdf['caffeine'].max()
newerdf['caffeine'] = newerdf['caffeine'].map({0:'no',(1,2,3,4,5,6,7,8,9,10):'yes'})
newerdf.groupby(['caffeine'])['distance'].mean()
newdf['caffeine']
0 0.0
1 3.0
2 1.0
3 2.0
5 1.0
...
911 1.0
912 1.0
913 2.0
914 1.0
915 2.0
newerdf['caffeine']:
0 no
1 NaN
2 NaN
3 NaN
5 NaN
...
911 NaN
912 NaN
913 NaN
914 NaN
915 NaN
uj5u.com熱心網友回復:
這是一種方法
# check value of caffeine, if it zero, then map the boolean result to Yes, No
df['caffeine']=df['caffeine'].eq(0).map({True:'no', False:'yes'})
uj5u.com熱心網友回復:
您實際上可以使用np.where()來實作您所陳述的邏輯,而無需陳述除 0 之外的所有潛在值。它以類似于 Excel 的 IF 函式的矢量化方式運行。
newerdf['caffeine'] = np.where(newerdf['caffeine'] == 0,'no','yes')
uj5u.com熱心網友回復:
您定義字典的方式沒有意義,它表明您想要map
精確的(1,2,3,4,5,6,7,8,9,10)
元組 to 'yes'
。
您需要使用反向映射:
d = {'no': [0], 'yes': (1,2,3,4,5,6,7,8,9,10)}
d2 = {k:v for v,l in d.items() for k in l}
newerdf['caffeine'] = newerdf['acaffeine'].map(d2)
輸出:
0 no
1 yes
2 yes
3 yes
5 yes
...
911 yes
912 yes
913 yes
914 yes
915 yes
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/531560.html