【问题标题】:turn series of string data points into list将一系列字符串数据点转换为列表
【发布时间】:2020-06-30 22:37:52
【问题描述】:

我导入了一些由于方括号而看起来像项目列表的数据,但实际上只是字符串。

我使用 Pandas df['column name'].values.tolist() 将每一行转换为一个列表:

[
"41885593, 'DNV GL Group AS', 'DNVGI', 'SNPC', '2nd Party Consultant', datetime.date(2017, 2, 28)",
 "48551738, 'Vigeo SAS', 'VIGEO', 'SNPC', '2nd Party Consultant', datetime.date(2017, 2, 28)",
 "50177826, 'Climate Bonds Initiative', 'CLIBON', 'TRPC', '3rd Party Certifier', datetime.date(2017, 2, 28)"
]

但列表中的每一项都保留为字符串。我需要每个隐蔽项,因此它们实际上是列表中的单独项目,而不仅仅是字符串。如果我使用list(item) 转换为列表,它会将其分解为列表中的每个字符。

所以如果它有效,我会有一个类似的列表:

mystuff = [
            "41885593, 'DNV GL Group AS', 'DNVGI', 'SNPC', '2nd Party Consultant', datetime.date(2017, 2, 28)", 
            "48551738, 'Vigeo SAS', 'VIGEO', 'SNPC', '2nd Party Consultant', datetime.date(2017, 2, 28)", 
            "50177826, 'Climate Bonds Initiative', 'CLIBON', 'TRPC', '3rd Party Certifier', datetime.date(2017, 2, 28)"
            ]

如果我在它上面运行一个 for 循环:

for item in mystuff:
    print(item)
    print("*********")

输出将是:

41885593, 'DNV GL Group AS', 'DNVGI', 'SNPC', '2nd Party Consultant', datetime.date(2017, 2, 28)
*********
48551738, 'Vigeo SAS', 'VIGEO', 'SNPC', '2nd Party Consultant', datetime.date(2017, 2, 28)
*********
50177826, 'Climate Bonds Initiative', 'CLIBON', 'TRPC', '3rd Party Certifier', datetime.date(2017, 2, 28)
*********

【问题讨论】:

  • 输入和输出在我看来是一样的。
  • 你是对的。一旦我可以将每个元素作为列表中的一个项目访问,我就需要对这些数据进行一些转换。但是现在,整个事情似乎是一个列表中的一个项目,而不是一个列表中的 3 个单独的列表。它看起来像一个用双引号分隔的项目列表,但由于某种原因只是一个长字符串。
  • 如果您使用pd.Series(mylist) 重新创建,您仍然会看到 3 行.. 到底是什么问题

标签: python string pandas list type-conversion


【解决方案1】:

mystuff 列表中的每个项目都是一个 str,表示以逗号分隔的元素。
基于strsplit方法的解决方案:

mystuff = [x.split(', ') for x in mystuff]

如果您想将mystuff作为项目列表:

mystuff = sum(map(lambda x: x.split(', '), mystuff), [])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    相关资源
    最近更新 更多