将每个单词转换为一个列表数据帧

时间:2017-11-15 20:38:24

标签: python pandas

我有一个数据框df

假设a,b,c,d,e,f,g,h,j是单词,而不是单个字母。

cate  word
apple [['a','b'],['c','d','e']]
pen   [['f','g','h'],['j']]

我想在word列中找到一个列表。因此预期输出应为word_list =[u'a b c d e',u'f g h j']

但是,当我使用以下代码时:

word_list =[]

for line in df['word']:
    for word in line:
        word_list.append(word)

所以输出不是我的预期。

2 个答案:

答案 0 :(得分:2)

然后展平list然后展开join

df.word=df.word.apply(lambda x : ' '.join(sum(x,[])))

df
Out[847]: 
    cate       word
0  apple  a b c d e
1    pen    f g h j

df.word.tolist()
Out[848]: ['a b c d e', 'f g h j']

数据输入:

df = pd.DataFrame({"cate": ['apple','pen'],'word':[[['a','b'],['c','d','e']],[['f','g','h'],['j']]]})

答案 1 :(得分:0)

一种有效的解决方案是使用np.concatenate + str.join

df['word'] = df.word.apply(np.concatenate).str.join(' ')    
df

    cate       word
0  apple  a b c d e
1    pen    f g h j

df.word.tolist()
['a b c d e', 'f g h j']

如果df['word']不是列的列(而是字符串),则您需要使用ast.literal_eval(安全评估)转换它:< / p>

import ast
df['word'] = df.word.apply(ast.literal_eval)

解决方案的其余部分是相同的。