首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >itertools.chain.from_iterable工作在嵌套的数字列表上,而不是字符串列表上?

itertools.chain.from_iterable工作在嵌套的数字列表上,而不是字符串列表上?
EN

Stack Overflow用户
提问于 2019-10-18 12:36:01
回答 1查看 262关注 0票数 1

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

这是列的样子

代码语言:javascript
复制
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

我设法把它们结合在一起

代码语言:javascript
复制
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

但是我想要一个很长的列表,其中包含像[Algorithms, Brain, Brain Mapping, Computer Si..., ... , Animals, Base Composition, Birds, Genetic Var...]这样的所有字符串

我尝试过使用itertools,但是它仍然给了我一个嵌套列表,但是它在本例中有效

代码语言:javascript
复制
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]

也尝试过flattened = [val for sublist in list_of_lists for val in sublist]也没能让它起作用。

请帮帮忙!

以下是所有子列表的完整列表

代码语言:javascript
复制
['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']
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-18 13:02:43

将值转换为列表,然后转换为DataFrameSeries构造函数:

代码语言:javascript
复制
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]]

代码语言:javascript
复制
s = pd.Series([df_mesh['terms'].tolist()])
print (s)
0    [[Algorithms, Brain], [Adult, Algorithms]]
dtype: object

编辑:

代码语言:javascript
复制
s1 = pd.Series([[val for sublist in df_mesh['terms'] for val in sublist]])
print (s1)
0    [Algorithms, Brain, Adult, Algorithms]
dtype: object

或者:

代码语言:javascript
复制
s1 = pd.Series([list(itertools.chain.from_iterable(df_mesh['terms']))])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58451090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档