首页 > 解决方案 > 将带有元素列表的 csv 文件读入 pandas 数据框

问题描述

我有以下格式的 CSV 文件:

index      A      B      C
ind1    [1,2,3][3,4,5][6,7,8]
ind2    [1,4,3,4,8][9,1,2,1,4][3,7,3,5,9]
ind3    [2,8][1,8][1,5]

其中每个单元格(例如 A,ind1)都有一个列表 [1,2,3]。当我将其导入数据框时:

df=pd.read_csv('filename.csv')

我得到一个与 csv 格式相同的数据框,但是,单个单元格中的列表作为字符串导入。

假设我索引 ind1 列 A 的第一个元素 df.iloc[0]['A']给我'['而不是1

基本上它是[1,2,3]作为一个长字符串读取而不是作为一个列表读取。

如何将所有单元格中的值转换为列表?

标签: pythonpandascsvdataframe

解决方案


有趣的问题。如果您将使用 pandas,我将首先使用 literal_eval 对列表进行编码。

import pandas as pd from ast import literal_eval df = pd.read_csv("filename.csv")

比您可以使用 pandas applymap 将 literal_eval 函数应用于每个单元格。

df[['A', 'B', 'C']] = df[['A', 'B', 'C']].applymap(literal_eval)

现在,您已经提取了列表,您可以像处理普通列表一样对它们做出反应。例如,这将从第一个列表中为您提供第一个元素:

df.iloc[0]['A'][0]

我希望这会帮助你


推荐阅读