包含字列

时间:2017-04-23 11:03:49

标签: python string pandas dataframe

从这样的字符串数组中获取最简单的方法是什么:

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)

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