Python 跳过CSV文件中的行
通过打印,我总是得到前90行,而不是0到89和90到179等。如何纠正初始化,以便首先跳过行并开始读取文件 输出kf=100,集合=9Python 跳过CSV文件中的行,python,pandas,csv,Python,Pandas,Csv,通过打印,我总是得到前90行,而不是0到89和90到179等。如何纠正初始化,以便首先跳过行并开始读取文件 输出kf=100,集合=9 kf = 10 sets = 90 for i in range(0, kf): chunk[i] = pd.read_csv("Dataset.csv", skiprows=(i*sets), nrows=sets) 我相信您需要以下参数: 编辑: 我使用您的代码创建示例数据,问题是列的值分析不正确,所以对于第一组,必需的参数namewithif e
kf = 10
sets = 90
for i in range(0, kf):
chunk[i] = pd.read_csv("Dataset.csv", skiprows=(i*sets), nrows=sets)
我相信您需要以下参数: 编辑: 我使用您的代码创建示例数据,问题是列的值分析不正确,所以对于第一组,必需的参数
name
withif else
withNone
:
for df in pd.read_csv("Dataset.csv", chunksize=sets):
print(df)
是的,这适用于相同大小的块。但是如果我想改变尺寸呢?在nrows之前不应该跳过行吗?@AndrewZacharakis-我测试了你的解决方案,效果很好,你能添加一些示例数据来显示你的问题吗?例如
kf=2 sets=6
和一些20
行数据。我添加了一个示例,并将块长度设为9行。@AndrewZacharakis-没有一些覆盖数据吗?如果将chunk[i]
更改为a
,然后打印(a)
是否正常工作?什么是chunk?我在读取for循环后添加了打印(a),仍然打印前90行。块是数据集的一部分。
for df in pd.read_csv("Dataset.csv", chunksize=sets):
print(df)
import pandas as pd
#original data
temp=u"""colA,colB
A,1
B,2
A,3
C,4
B,5
A,6
C,7
B,8
A,9
C,10
B,11
A,12
C,13
D,14
B,15
C,16"""
kf = 3
sets = 6
#after testing replace 'pd.compat.StringIO(temp)' to 'Dataset.csv'
cols = pd.read_csv(pd.compat.StringIO(temp), nrows=0).columns
print (cols)
Index(['colA', 'colB'], dtype='object')
for i in range(0, kf):
if i == 0:
val = 0
names = None
else:
val = 1
names = cols
df = pd.read_csv(pd.compat.StringIO(temp),
skiprows=(i*sets) + val,
nrows=sets,
names=names)
print (df)
colA colB
0 A 1
1 B 2
2 A 3
3 C 4
4 B 5
5 A 6
colA colB
0 C 7
1 B 8
2 A 9
3 C 10
4 B 11
5 A 12
colA colB
0 C 13
1 D 14
2 B 15
3 C 16