熊猫读取csv,修剪最后两个字符

时间:2018-05-17 19:14:52

标签: python python-3.x python-2.7 pandas

csv文件如下所示:

stderr

当我尝试使用pandas read_csv读取此文件时,数据框如下所示:

a,b,c
1,2,3, 
4,5,6, 
a,b,c, 

我认为数据中的问题是:它看起来像1,2,3,space \ n和pandas认为有4列而第一列是未命名的。有什么方法可以改为:

   |---------------|
   |   | a | b | c |
   |---------------|
   | 1 | 2 | 3 |   |
   | 4 | 5 | 6 |   |
   | a | b | c |   |
   |---------------|

这些文件大约有5000万行,文件很多。有没有办法以最短的运行时间做到这一点?

2 个答案:

答案 0 :(得分:6)

使用usecol中的pd.read_csv参数只读取csv文件中的前三列。

from io import StringIO
csvtext = StringIO("""a,b,c
1,2,3, 
4,5,6, 
a,b,c, """)

df = pd.read_csv(csvtext, usecols=[0,1,2])
df

输出:

   a  b  c
0  1  2  3
1  4  5  6
2  a  b  c

答案 1 :(得分:5)

请考虑以下代码index_col=False。当您不知道csv文件中预期有多少列时,可以使用此解决方案。如果不同的文件具有不同的列数,则会更好。有关更多信息,请参阅Docs

from io import StringIO
csvtext = StringIO("""a,b,c
1,2,3, 
4,5,6, 
a,b,c, """)

df = pd.read_csv(csvtext, index_col=False)
df

输出:

    a   b   c
0   1   2   3
1   4   5   6
2   a   b   c