假設我有一個熊貓DataFrame。如何設置(1)熊貓數據框中的最大元素和(0)其他所有內容?
df = pd.DataFrame(index = [ix for ix in range(10)], columns=list('abcdef'), data=np.random.randn(10,6))
DF:
a b c d e f 0 -1.238393 -0.755117 -0.228638 -0.077966 0.412947 0.887955 1 -0.342087 0.296171 0.177956 0.701668 -0.481744 -1.564719 2 0.610141 0.963873 -0.943182 -0.341902 0.326416 0.818899 3 -0.561572 0.063588 -0.195256 -1.637753 0.622627 0.845801 4 -2.506322 -1.631023 0.506860 0.368958 1.833260 0.623055 5 -1.313919 -1.758250 -1.082072 1.266158 0.427079 -1.018416 6 -0.781842 1.270133 -0.510879 -1.438487 -1.101213 -0.922821 7 -0.456999 0.234084 1.602635 0.611378 -1.147994 1.204318 8 0.497074 0.412695 -0.458227 0.431758 0.514382 -0.479150 9 -1.289392 -0.218624 0.122060 2.000832 -1.694544 0.773330
,我怎麼把設置1至橫行max和0其他元素?
我想出了:
>>> for i in range(len(df)):
... df.loc[i][df.loc[i].idxmax(axis=1)] = 1
... df.loc[i][df.loc[i] != 1] = 0
產生 DF:
a b c d e f 0 0 0 0 0 0 1 1 0 0 0 1 0 0 2 0 1 0 0 0 0 3 0 0 0 0 0 1 4 0 0 0 0 1 0 5 0 0 0 1 0 0 6 0 1 0 0 0 0 7 0 0 1 0 0 0 8 0 0 0 0 1 0 9 0 0 0 1 0 0
有沒有人有這樣做的更好的辦法?可能是通過擺脫for循環或應用lambda?
這很好。謝謝。 –
@RaihanMasud很高興它有幫助,你可以檢查答案,以確認它與你合作,這個答案的左邊這個真正的標誌 –