import pandas as pd
my_column = pd.Series([['A','B'],['B','C','D'],['B','D']])
frameA = pd.DataFrame(my_column, columns=['my_column'])
#extract all new headers from the DataFrame rows, in order:
headers = sorted(list(set([x for y in frame['my_column'] for x in y])))
#make a list of the DataFrame rows (stored as lists):
rows = [y for x in range(len(frame)) for y in frame.loc[x]]
builder = {} #construct a dictionary to build a new DataFrame from
for header in headers:
column = []
for row in rows:
if header in row:
column.append(1)
else:
column.append(0)
builder.update({header:column})
frameB = pd.DataFrame(builder)
print(frameB)
我认为您需要的是pandas中的
get_dummies()
函数,您可以在其中找到here的文档根据文件:
为了好玩,这里有一个傻瓜的天真实现:
结果:
如果列中有列表,请将^{} 与^{} 一起使用:
或^{} :
如果有字符串,请将^{} 与
str.get_dummies
一起使用,如果需要,请从列名中删除"
:相关问题 更多 >
编程相关推荐