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如果有帮助,请接受答案,谢谢。此外,你还可以投票选出所有有用的答案。