我有一個 df,其中有幾列只有 True/False 值。我想創建另一列,其值會告訴我哪一列有True
值。這是一個例子:
指數 | bol_1 | bol_2 | bol_3 | 標準 |
---|---|---|---|---|
1 | 真的 | 錯誤的 | 錯誤的 | bol_1 |
2 | 錯誤的 | 真的 | 錯誤的 | bol_2 |
3 | 真的 | 真的 | 錯誤的 | [ bol_1 , bol_2 ] |
我的目標是知道哪些行具有真值(至少為 1),以及哪些列負責這些真值。我希望能夠對這個新列進行一些基本統計,例如 bol_1 有多少行是具有 True 值的唯一列。
uj5u.com熱心網友回復:
用于DataFrame.select_dtypes
布爾列,將列名轉換為陣列和串列理解過濾器True
的值:
df1 = df.select_dtypes(bool)
cols = df1.columns.to_numpy()
df['criteria'] = [list(cols[x]) for x in df1.to_numpy()]
print (df)
bol_1 bol_2 bol_3 criteria
1 True False False [bol_1]
2 False True False [bol_2]
3 True True False [bol_1, bol_2]
如果性能不重要,請使用DataFrame.apply
:
df['criteria'] = df1.apply(lambda x: cols[x], axis=1)
uj5u.com熱心網友回復:
一個可能的解決方案:
df.assign(criteria=df.apply(lambda x: list(
df.columns[1:][x[1:] == True]), axis=1))
輸出:
index bol_1 bol_2 bol_3 criteria
0 1 True False False [bol_1]
1 2 False True False [bol_2]
2 3 True True False [bol_1, bol_2]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/524034.html
標籤:熊猫
上一篇:將.xls檔案串列連接到.csv