擅长:python、mysql、java
<p>为了好玩,这里有一个傻瓜的天真实现:</p>
<pre><code>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)
</code></pre>
<p>结果:</p>
<pre><code> A B C D
0 1 1 0 0
1 0 1 1 1
2 0 1 0 1
</code></pre>