Pandas read_csv为每一行添加了不必要的“”

时间:2017-09-19 04:57:05

标签: python pandas

我有csv个文件

(我在这里显示前三行)

HEIGHT,WEIGHT,AGE,GENDER,SMOKES,ALCOHOL,EXERCISE,TRT,PULSE1,PULSE2,YEAR
173,57,18,2,2,1,2,2,86,88,93
179,58,19,2,2,1,2,1,82,150,93

我正在使用pandas read_csv来读取文件并将它们放入列中。

这是我的代码:

import pandas as pd
import os
path='~/Desktop/pulse.csv'

path=os.path.expanduser(path)
my_data=pd.read_csv(path, index_col=False, header=None, quoting = 3, delimiter=',')
print my_data

问题是第一列和最后一列有“值之前和之后。

此外,我无法摆脱索引。

可能会犯一些愚蠢的错误,但我提前感谢你的帮助

2 个答案:

答案 0 :(得分:2)

最终解决方案 - 使用replace转换为int并从列名中删除"使用strip

df = pd.read_csv('pulse.csv', quoting=3)

df = df.replace('"','', regex=True).astype(int)
df.columns = df.columns.str.strip('"')
print (df.head())

   HEIGHT  WEIGHT  AGE  GENDER  SMOKES  ALCOHOL  EXERCISE  TRT  PULSE1  \
0     173      57   18       2       2        1         2    2      86   
1     179      58   19       2       2        1         2    1      82   
2     167      62   18       2       2        1         1    1      96   
3     195      84   18       1       2        1         1    2      71   
4     173      64   18       2       2        1         3    2      90   

   PULSE2  YEAR  
0      88    93  
1     150    93  
2     176    93  
3      73    93  
4      88    93  

index_col=False表示强制不读取第一列索引,但数据帧总是需要一些索引,因此添加默认值 - 0,1,2...。所以这里可以省略。

应该删除

header=None,因为它强制不要将第一行(csv的标题)读取到DataFrame的列。然后第一行数据也是标题,数值转换为字符串。

delimiter=','也应该被移除,因为它与sep=','相同,这是默认参数。

答案 1 :(得分:0)

@jezrael是对的 - 熊猫数据框总会添加索引。这是必要的。

尝试使用df[0] = df[0].str.strip()替换为最后一列的零。

在您执行此操作之前,请将您的csv转换为数据框 - pd.DataFrame.from_csv(path)