Python itertools.chain.from_iterable适用于嵌套的数字列表,但不适用于字符串列表?

Python itertools.chain.from_iterable适用于嵌套的数字列表,但不适用于字符串列表?,python,pandas,iterable,Python,Pandas,Iterable,我的数据框中有一列由列表组成,我想将每行中的所有列表合并到一个单元格中的一个列表中 这就是专栏的样子 df.terms.dropna() 0 [Algorithms, Brain, Brain Mapping, Computer Si... 4 [Adult, Algorithms, Cerebrovascular Circulatio... 5 [Algorithms, Brain, Brain Mapping, Hemodynamic... 7 [Adult,

我的数据框中有一列由列表组成,我想将每行中的所有列表合并到一个单元格中的一个列表中

这就是专栏的样子

df.terms.dropna()
0     [Algorithms, Brain, Brain Mapping, Computer Si...
4     [Adult, Algorithms, Cerebrovascular Circulatio...
5     [Algorithms, Brain, Brain Mapping, Hemodynamic...
7     [Adult, Algorithms, Brain, Cerebrovascular Cir...
10    [Animals, Base Composition, Birds, Genetic Var...
Name: mesh_terms, dtype: object
我设法把它们结合在一起,然后

0    [[Algorithms, Brain, Brain Mapping, Computer S...],[Adult, Algorithms, Cerebrovascular Circulatio...],[Algorithms, Brain, Brain Mapping, Hemodynamic...],[list_index_7],[list_index_10]]
Name: mesh_terms, dtype: object
但我想要一个包含所有字符串的长列表,比如
[算法、大脑、大脑映射、计算机Si…,…、动物、基本成分、鸟类、遗传变量…]

我尝试过使用itertools,但它仍然提供了一个嵌套列表,但在这个示例中它是有效的

list2d = [[1,2,3],[4,5,6], [7], [8,9]]
list(itertools.chain.from_iterable(list2d))

[1, 2, 3, 4, 5, 6, 7, 8, 9]
还尝试了
展平=[val for sublist in list of_list for val in sublist]
也没有成功

请帮忙

这是所有子列表的完整列表

['Algorithms', 'Brain', 'Brain Mapping', 'Computer Simulation', 'Hemodynamics', 'Humans', 'Linear Models', 'Magnetic Resonance Imaging', 'Models, Neurological'] ['Adult', 'Algorithms', 'Cerebrovascular Circulation', 'Computer Simulation', 'Female', 'Functional Laterality', 'Globus Pallidus', 'Humans', 'Image Processing, Computer-Assisted', 'Magnetic Resonance Imaging', 'Male', 'Models, Neurological', 'Nonlinear Dynamics', 'Reinforcement (Psychology)', 'Reward', 'Young Adult'] ['Algorithms', 'Brain', 'Brain Mapping', 'Hemodynamics', 'Humans', 'Image Interpretation, Computer-Assisted', 'Linear Models', 'Magnetic Resonance Imaging', 'Models, Neurological'] ['Adult', 'Algorithms', 'Brain', 'Cerebrovascular Circulation', 'Female', 'Hemodynamics', 'Humans', 'Image Interpretation, Computer-Assisted', 'Magnetic Resonance Imaging', 'Male', 'Statistics, Nonparametric', 'Young Adult'] ['Animals', 'Base Composition', 'Birds', 'Genetic Variation', 'Genome', 'Genomics', 'Mammals', 'Molecular Sequence Data', 'Phylogeny', 'Reptiles', 'Retroelements', 'Tandem Repeat Sequences']

将值转换为列表,然后转换为
数据帧
系列
构造函数:

df_mesh = pd.DataFrame({'terms': [['Algorithms','Brain'],['Adult','Algorithms']]})
print (df_mesh)
                 terms
0  [Algorithms, Brain]
1  [Adult, Algorithms]

df = pd.DataFrame({'new': [df_mesh['terms'].tolist()]})
print (df)
                                          new
0  [[Algorithms, Brain], [Adult, Algorithms]]

编辑:

或:


您是如何将它们组合成一个列表的?请尝试
[val for sublist in list_of_lists[0]for val in sublist]
,假设list_of_lists是包含网格术语的对象。对于我来说,使用nice-
list(itertools.chain.from_iterable(df['terms'])
@billtlizard
df_mesh=df['mesh_terms'].dropna()df_mesh.index=len(df_-mesh)*[0]df_-mesh=df_-mesh.groupby(df_-mesh.index).agg(列表)
我相信有更好的方法可以做到这一点!@DanielMesejo确实将所有内容放在一个列表中,但不在同一行,如果我尝试创建一个我相信的数据帧,这将产生问题。这将如何改变任何内容?看起来它仍然是一个嵌套的列表list@Timxymo1225-我的样本数据的输出是什么?
print
会给你
0[[算法,大脑],[成人,算法]]
但我要找的是
[算法,大脑,成人,算法]
先生,你真是个天才!
s = pd.Series([df_mesh['terms'].tolist()])
print (s)
0    [[Algorithms, Brain], [Adult, Algorithms]]
dtype: object
s1 = pd.Series([[val for sublist in df_mesh['terms'] for val in sublist]])
print (s1)
0    [Algorithms, Brain, Adult, Algorithms]
dtype: object
s1 = pd.Series([list(itertools.chain.from_iterable(df_mesh['terms']))])