3 回答

TA贡献1821条经验 获得超4个赞
你可能想检查
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()
添加回答
举报