【问题标题】:Convert csv cells to a nested list将 csv 单元格转换为嵌套列表
【发布时间】:2021-12-01 07:21:46
【问题描述】:

我有一个 .csv 文件,其中有一列还包含一个结构化的值列表:

我想做的是创建一个包含以下格式的所有值的嵌套列表,所以我可以用另一种方法遍历它们:

[[1009, 1310], [9420, 9699], [11590, 12009], [12290, 12499], [14460, 14809]]

我尝试通过简单地将单元格转换为列表来阅读它:

df = pd.read_csv('example.csv', usecols=['anomaly_sequences'])
a = df.iloc[0]['anomaly_sequences']
print(a[0])

但我得到的输出是:[

如果我用 print(a.dtype) 检查它的类型,我会得到:

AttributeError: 'str' object has no attribute 'dtype'

如何直接将其作为列表而不是字符串读取?

【问题讨论】:

标签: python pandas list dataframe csv


【解决方案1】:

您可以使用标准 ast 库中的 literal_eval 获取字符串并将其计算为 Python 代码。

import ast
df['anomaly_sequences'] = df['anomaly_sequences'].apply(ast.literal_eval)

【讨论】:

  • 我认为OP有df = pd.DataFrame(data={'A':'[(1,2),(3,4)]'})形式的数据,他想要的是list of lists而不是list of tuples
  • 他表示需要对它们进行迭代和索引——这可以通过任何一种列表来实现。
  • 这个解决方案给了我ValueError: If using all scalar values, you must pass an index 我在上面评论中发布的df
  • 更新为使用 literal_eval 而不是 safe_eval。这会将字符串转换为 python 文字,因此您的序列字段应该转换。
猜你喜欢
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-28
  • 2020-02-28
  • 1970-01-01
  • 2017-09-11
相关资源
最近更新 更多