2
我有一個DataFrame True和False值。如何用列名填充數據框的真實值?
A B C D 0 False True True False 1 False False True False 2 True True False False
我想用列名稱和假值填充真值。我該怎麼做?
即要得到的結果
A B C D 0 0 B C 0 1 0 0 C 0 2 A B 0 0
我有一個DataFrame True和False值。如何用列名填充數據框的真實值?
A B C D 0 False True True False 1 False False True False 2 True True False False
我想用列名稱和假值填充真值。我該怎麼做?
即要得到的結果
A B C D 0 0 B C 0 1 0 0 C 0 2 A B 0 0
首先更換booelan
到int
然後~
使用mask
或where
與反向掩碼:
df = df.astype(int).mask(df, df.columns.to_series(), axis=1)
print (df)
A B C D
0 0 B C 0
1 0 0 C 0
2 A B 0 0
df = df.astype(int).where(~df, df.columns.to_series(), axis=1)
print (df)
A B C D
0 0 B C 0
1 0 0 C 0
2 A B 0 0
謝謝John Galt用於大熊貓0.21.x
的新版本的改進:
df = df.astype(int).mask(df, df.columns, axis=1)
numpy
溶液:
a = np.tile(df.columns, [len(df.index),1])
print (a)
[['A' 'B' 'C' 'D']
['A' 'B' 'C' 'D']
['A' 'B' 'C' 'D']]
df = pd.DataFrame(np.where(df.astype(int), a, 0), columns=df.columns, index = df.index)
print (df)
A B C D
0 0 B C 0
1 0 0 C 0
2 A B 0 0
'df.astype(INT).mask(DF,df.columns,軸= 1)'應該做的我猜測? – Zero
它返回給我'ValueError:其他必須是與自己相同的形狀作爲ndarray' – jezrael
有趣的作品罰款'0.21.0' – Zero