Python 熊猫读取csv,修剪最后两个字符
csv文件如下所示:Python 熊猫读取csv,修剪最后两个字符,python,python-3.x,python-2.7,pandas,Python,Python 3.x,Python 2.7,Pandas,csv文件如下所示: a,b,c 1,2,3, 4,5,6, a,b,c, 当我尝试使用pandas read_csv读取此文件时,数据框如下所示: |---------------| | | a | b | c | |---------------| | 1 | 2 | 3 | | | 4 | 5 | 6 | | | a | b | c | | |---------------| 我认为数据中的问题是:它看起来像1,2,3,空
a,b,c
1,2,3,
4,5,6,
a,b,c,
当我尝试使用pandas read_csv读取此文件时,数据框如下所示:
|---------------|
| | a | b | c |
|---------------|
| 1 | 2 | 3 | |
| 4 | 5 | 6 | |
| a | b | c | |
|---------------|
我认为数据中的问题是:它看起来像1,2,3,空格\n,熊猫认为有4列,第一列未命名。有什么方法可以将此更改为:
|-----------|
| a | b | c |
|-----------|
| 1 | 2 | 3 |
| 4 | 5 | 6 |
| a | b | c |
|-----------|
这些文件大约有5000万行,并且有许多文件。有什么方法可以用最少的运行时间完成吗?使用
pd中的usecol
参数。read\u 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
a b c
0 1 2 3
1 4 5 6
2 a b c
考虑下面的代码,其中
index\u col=False
。当您不知道csv文件中需要多少列时,可以使用此解决方案。如果不同的文件具有不同的列数,则效果更好。有关更多信息,请参阅
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
a b c
0 1 2 3
1 4 5 6
2 a b c
查看pd.read中的usecols参数_csv@ScottBoston,你能再解释一下我在这种情况下可以使用它吗?如果我不知道输入csv文件中有多少列,你可以在
read\u csv()中使用index\u col=False
?我有大量文件,无法手动检查该文件中有多少列。您是正确的。你应该试试@harvipan解决方案。是的,我会的。谢谢@Scott,你的解决方案也奏效了。