3 回答

TA贡献2037条经验 获得超6个赞
这是一个粗略的方法:
for row, col in enumerate(labels):
df.loc[row,col] = 1
print(df.fillna(0).astype(int))
输出:
A B C D E G H J
0 1 1 0 1 1 0 0 0
1 0 0 0 0 0 1 1 1
2 0 0 1 0 0 0 1 0

TA贡献2036条经验 获得超8个赞
您可以为此使用列表推导并遍历标签
[df.set_value(i,x,1) for i,x in enumerate(labels)]
df.fillna(0).astype('int8')
输出
A B C D E G H J
0 1 1 0 1 1 0 0 0
1 0 0 0 0 0 1 1 1
2 0 0 1 0 0 0 1 0

TA贡献1793条经验 获得超6个赞
import pandas as pd
labels = [['A','B','D','E'], ['G','J','H'],['C','H']]
unique = set(x for l in labels for x in l)
data = []
for item in labels:
raw = {}
for value in unique:
if value in item:
raw[value] = 1
else:
raw[value] = 0
data.append(raw)
df = pd.DataFrame.from_dict(data)
df = df.reindex(sorted(df.columns), axis=1)
输出:
A B C D E G H J
0 1 1 0 1 1 0 0 0
1 0 0 0 0 0 1 1 1
2 0 0 1 0 0 0 1 0
添加回答
举报