3 回答

TA貢獻1821條經驗 獲得超5個贊
你可能想檢查
df.eq(True).dot(df.columns+',').str[:-1].str.split()
0 [california,string]
1 [lobster,string]
2 [california,lobster]
dtype: object

TA貢獻1998條經驗 獲得超6個贊
使用apply與lambda表達式:
# setting axis=1 in apply means you are looking across rows
df['new'] = df.apply(lambda x: df.columns[x == True].values, axis=1)
strings california lobster string \
0 a string with california True False True
1 a string with lobster False True True
2 a str with california and lobster True True False
new
0 [california, string]
1 [lobster, string]
2 [california, lobster]

TA貢獻1856條經驗 獲得超5個贊
上面的一個響應很好地創建了一個由逗號分隔的匹配項的括號字符串,這非常有幫助。我隨后遇到了一個問題,我需要計算匹配短語的數量,這使得將列置于列表類型而不是字符串中更有幫助。
df['matches'] = df.eq(True).dot(df.columns+',').str[:-1].str.split(',')
df['num_matches'] = df['matches'].str.len()
添加回答
舉報