发布了许多答案,但它们似乎无缘无故地复杂
这就是你的数据框的样子
import pandas as pd
df = pd.DataFrame([{'Name': 'A', 'Hobbies': ['sing','dance','movies']},
{'Name': 'B', 'Hobbies': ['movies','cook','dance']}])
这将是我简化事情的方式 -
# Map out hobbies list to create new hobbies column at same index.
for index, row in df.iterrows():
for each_hobby in row.Hobbies:
df.loc[index, each_hobby] = True
df.fillna(False, inplace=True) # Fill NaN values with False.
df.replace({False: 0, True: 1}, inplace=True) # Map out False to 0 and True to 1.
输出:
>>> df
Out[3]:
Name Hobbies sing dance movies cook
0 A [sing, dance, movies] 1 1 1 1
1 B [movies, cook, dance] 0 1 1 1