1
我有一個包含布爾值(1和-1)和nans的熊貓數據框。我想用「高」,「低」和nans這些字填充它。我曾嘗試:熊貓:3狀態布爾索引與字符串替換
1)布爾索引
df[df==1] = 'High'
但隨後得到了混合型錯誤,當我走到下一個條件,
2),並使用 '其中'
df.where(df==1,'High')
但這實際上給出了相反的結果(指定'高'到df <> 1)。
我應該怎麼做?
我有一個包含布爾值(1和-1)和nans的熊貓數據框。我想用「高」,「低」和nans這些字填充它。我曾嘗試:熊貓:3狀態布爾索引與字符串替換
1)布爾索引
df[df==1] = 'High'
但隨後得到了混合型錯誤,當我走到下一個條件,
2),並使用 '其中'
df.where(df==1,'High')
但這實際上給出了相反的結果(指定'高'到df <> 1)。
我應該怎麼做?
使用replace
或雙numpy.where
:
d = {1:'High', -1:'Low'}
df = df.replace(d)
另一種解決方案:
df = pd.DataFrame(np.where(df == 1, 'High',
np.where(df == -1, 'Low', np.nan)), index=df.index, columns=df.columns)
print (df)
樣品:
df = pd.DataFrame({'A':[1,-1,np.nan],
'B':[np.nan,1,1],
'C':[1,-1,1]})
print (df)
A B C
0 1.0 NaN 1
1 -1.0 1.0 -1
2 NaN 1.0 1
d = {1:'High', -1:'Low'}
df = df.replace(d)
print (df)
A B C
0 High NaN High
1 Low High Low
2 NaN High High
df = pd.DataFrame(np.where(df == 1, 'High',
np.where(df == -1, 'Low', np.nan)), index=df.index, columns=df.columns)
print (df)
A B C
0 High nan High
1 Low High Low
2 nan High High