熊猫read_csv导入列具有多个值作为列表

时间:2020-02-26 09:39:49

标签: python python-3.x pandas csv

我有一个.csv文件,其中包含几列,其中一列包含多个值:

"column1";"column2";"column3";
some_string; 1 ; 1,2,3,4 ;

现在,我想使用熊猫read_csv导入文件:

import pandas as pd
df = pd.read_csv('file.csv', sep=';')

这显然会导致多个值作为单个字符串对象导入的问题。有什么方法可以将这些值作为列表或数组导入,甚至可以在该单元格中调用单个值?那将是非常有帮助的!

提前谢谢!

2 个答案:

答案 0 :(得分:0)

您可以尝试使用pd.read_csvconverters参数来传递指定col的函数:

>>> pd.read_csv(s, sep=';', usecols = range(3), 
                converters = {'column3':lambda x:x.split(',')})

       column1  column2         column3
0  some_string        1  [ 1, 2, 3, 4 ]
# or,
>>> pd.read_csv(s, sep=';', 
                converters = {'column3':lambda x:x.split(',')}).dropna(1)
       column1  column2         column3
0  some_string        1  [ 1, 2, 3, 4 ]

答案 1 :(得分:0)

您可以在加载数据后执行此操作,您需要一个lambda函数:

df['column3'] = df['column3'].apply(lambda x: str(x).split(","))

检查单元格的类型,这会给出列表:

type(df.iloc[0,2])

检查长度,这是4:

len(df.iloc[0,2])

在列表中选择一个元素:

df.iloc[0,2][0]

将列表元素变成整数:

df['column3'] = df['column3'].apply(lambda x: list(map(int, x)))

检查类型:

type(df.iloc[0,2][0])
相关问题