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万行,文件很多。有没有办法以最短的运行时间做到这一点?
答案 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