我的資料框看起來像這樣:
F1 F2 F3 F4 F5
F1 1 1 1 1 1
F2 0 1 1 0 1
F3 0 1 1 1 1
F4 0 0 0 1 0
F5 0 1 1 1 1
我需要的輸出:
HOR VER IS
F1 [F1, F2, F3, F4, F5] [F1] [F1]
F2 [F2, F3, F5] [F1, F2, F3, F5] [F2, F3, F5]
F3 [F2, F3, F4, F5] [F1, F2, F3, F5] [F2, F3, F5]
F4 [F4] [F1, F3, F4, F5] [F4]
F5 [F2, F3, F4, F5] [F1, F2, F3, F5] [F2,F3,F5]
在 HOR:我想水平顯示包含 1 的列名串列。在 VER 中:我想垂直顯示包含 1 的行名串列。IS 是 HOR 和 VER 的交集
我不知道如何編碼。請幫忙!
uj5u.com熱心網友回復:
利用布爾索引和集合。下面的代碼
s=df==1#Boolean values where 1
df = df.assign(HOR = s.agg(lambda s: s.index[s].values, axis=1),
VER = s.agg(lambda s: s.index[s].values, axis=0)
)
df['IS'] =list(df.apply(lambda x: list(set(x['HOR']).intersection(set(x['VER']))), axis=1))
F1 F2 F3 F4 F5 HOR VER IS
F1 1 1 1 1 1 [F1, F2, F3, F4, F5] [F1] [F1]
F2 0 1 1 0 1 [F2, F3, F5] [F1, F2, F3, F5] [F5, F3, F2]
F3 0 1 1 1 1 [F2, F3, F4, F5] [F1, F2, F3, F5] [F5, F3, F2]
F4 0 0 0 1 0 [F4] [F1, F3, F4, F5] [F4]
F5 0 1 1 1 1 [F2, F3, F4, F5] [F1, F2, F3, F5] [F5, F3, F2]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/443068.html
