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

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


这是列的样子


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

但我想要一个包含所有字符串的长列表,例如[Algorithms, Brain, Brain Mapping, Computer Si..., ... , Animals, Base Composition, Birds, Genetic Var...]


我试过使用 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]

也试过flattened = [val for sublist in list_of_lists for val in sublist]没有让它工作。



阿波罗的战车
浏览 104回答 1
1回答

慕丝7291255

将值转换为列表,然后转换为DataFrame或Series构造函数:df_mesh = pd.DataFrame({'terms': [['Algorithms','Brain'],['Adult','Algorithms']]})print (df_mesh)                 terms0  [Algorithms, Brain]1  [Adult, Algorithms]df = pd.DataFrame({'new': [df_mesh['terms'].tolist()]})print (df)                                          new0  [[Algorithms, Brain], [Adult, Algorithms]]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']))])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java