1 回答
TA贡献1847条经验 获得超7个赞
它并不优雅,但它完成了工作:
df['split'] = df.problems.str.split(';')
df['mind'] = df.split.apply(
lambda x: ''.join([category for category in x if 'mind' in category]))
df['body'] = df.split.apply(
lambda x: ''.join([category for category in x if 'body' in category]))
df['soul'] = df.split.apply(
lambda x: ''.join([category for category in x if 'soul' in category]))
df.drop('split', inplace=True)
你可能会换行
df[cat] = df.split.apply(lambda x: ''.join([category for category in x if cat in category]))
在一个函数中并在每个数据帧上运行它cat(例如cats=['mind', 'body', 'soul', 'whathaveyou', 'etc.'].
编辑:
正如@ifly6 所指出的,用户输入的字符串中可能存在关键字交叉。为了安全起见,该功能应更改为
df[cat] = df.split.apply(lambda x: ''.join([category for category in x if category.startswith(cat)]))
添加回答
举报