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

Python 将每个单词转换为一个列表数据帧,python,pandas,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\u list=[u'abcde',u'fghj'] 但是,当我使用以下代码时: word_list =[] for line in df['word']: for word in line:

我有一个数据帧
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\u list=[u'abcde',u'fghj']

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

word_list =[]

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

因此,输出不是我所期望的。

展平然后
列表
然后
加入它

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']]]})

然后展平
列表
然后
加入它

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']]]})

一个有效的解决方案是使用
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\u eval
转换它(安全评估):


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

一个有效的解决方案是使用
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\u eval
转换它(安全评估):


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

我收到了一条错误消息,上面说
TypeError:can can can concatenate list(而不是“str”)to list
@user3849475是唯一的问题,你能给我显示
df.word.apply(type)
的结果吗?在我的解决方案
df['word']=df['word'].apply(ast.literal\u eval)之前
结果是列表类型。
01
@user3849475确保它是列表的列表而不是str的列表。它说
Name:word,dtype:object
我收到一条错误消息,它说
TypeError:只能将列表(而不是“str”)连接到列表
@user3849475是你能给我看
df.word.apply(type)的结果吗
在我的解决方案之前执行此操作
df['word']=df['word'].apply(ast.literal\u eval)
结果是列表类型。
0 1
@user3849475确保它是列表列表而不是str列表。它说
Name:word,dtype:object
你能打印
df.word.dtype
并告诉我显示了什么吗?或者看看我的答案。你能打印
df.word.dtype
并告诉我显示了什么吗?或者看看我的答案。我刚刚修复了我的错误。谢谢你的建议。@user3849475如果有帮助,请接受答案,谢谢。此外,您还可以对所有有用的答案进行投票。我刚刚修复了我的错误。谢谢您的建议。@user3849475如果有帮助,请接受答案,谢谢。此外,你还可以投票选出所有有用的答案。