【发布时间】:2019-01-08 13:05:16
【问题描述】:
我有带有电影标题的数据框和带有流派的列。例如标题为“One”的电影是“Action”和“Vestern”,因为在相应的列中有“1”。
Movie Action Fantasy Vestern
0 One 1 0 1
1 Two 0 0 1
2 Three 1 1 0
我的目标是创建列genres,其中将包含特定电影所具有的每个流派的名称。
为此,我尝试使用 lambda 和 list comprehension,因为认为这会有所帮助。但是在运行如下代码行之后:
df['genres'] = df.apply(lambda x: [x+"|"+x for x in df.columns if x!=0])
我在每一行中只有NaN 值:
Movie Action Fantasy Vestern genres
0 One 1 0 1 NaN
1 Two 0 0 1 NaN
2 Three 1 1 0 NaN
也尝试使用groupby,但没有成功。
预期输出是:
Movie Action Fantasy Vestern genres
0 One 1 0 1 Action|Vestern
1 Two 0 0 1 Vestern
2 Three 1 1 0 Action|Fantasy
要重现的代码:
import pandas as pd
import numpy as np
df = pd.DataFrame({"Movie":['One','Two','Three'],
"Action":[1,0,1],
"Fantasy":[0,0,1],
"Vestern":[1,1,0]})
print(df)
感谢您的帮助
【问题讨论】:
标签: python pandas dataframe lambda list-comprehension