从这样的字符串数组中获取最简单的方法是什么:
arr = ['abc def ghi', 'def jkl xyz', 'abc xyz', 'jkl xyz']
到数据框,其中每列是单个单词,每行包含0或1,具体取决于单词是否出现在字符串中。像这样:
abc def ghi jkl xyz
0 1 1 1 0 0
1 0 1 0 1 1
2 1 0 0 0 1
3 0 0 0 1 1
编辑:这是我的方法,对我来说似乎很多python循环而不使用内置的pandas函数
labels = (' ').join(arr)
labels = labels.split()
labels = list(set(labels))
labels = sorted(labels)
df = pd.DataFrame(np.zeros((len(arr), len(labels))), columns=labels)
cols = list(df.columns.values)
for i in range(len(arr)):
for col in cols:
if col in arr[i]:
df.set_value(i, col, 1)
答案 0 :(得分:3)
EDITED - 减少到3条基本路线:
import pandas as pd
arr = ['abc def ghi', 'def jkl xyz', 'abc xyz', 'jkl xyz']
words = set( ' '.join( arr ).split() )
rows = [ { w : int( w in e ) for w in words } for e in arr ]
df = pd.DataFrame( rows )
print( df )
结果:
abc def ghi jkl xyz
0 1 1 1 0 0
1 0 1 0 1 1
2 1 0 0 0 1
3 0 0 0 1 1