我有一个.csv文件,其中包含几列,其中一列包含多个值:
"column1";"column2";"column3";
some_string; 1 ; 1,2,3,4 ;
现在,我想使用熊猫read_csv导入文件:
import pandas as pd
df = pd.read_csv('file.csv', sep=';')
这显然会导致多个值作为单个字符串对象导入的问题。有什么方法可以将这些值作为列表或数组导入,甚至可以在该单元格中调用单个值?那将是非常有帮助的!
提前谢谢!
答案 0 :(得分:0)
您可以尝试使用pd.read_csv
的converters
参数来传递指定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])