我有一个数据框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)
所以输出不是我的预期。
答案 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)
解决方案的其余部分是相同的。