首页 > 解决方案 > 如何使用 Pandas 按子集读取 CSV 文件子集?

问题描述

我有一个包含 13000 行和 3 列的数据框:

('time', 'rowScore', 'label')

我想逐个子集地阅读:

[[1..360], [360..712], ..., [12640..13000]]

我也使用了列表,但它不起作用:

import pandas as pd
import math
import datetime

result="data.csv"
dataSet = pd.read_csv(result)
TP=0
count=0
x=0
df = pd.DataFrame(dataSet, columns = 
     ['rawScore','label'])
for i,row in df.iterrows():
    data=  row.to_dict()   

    ScoreX= data['rawScore']
    labelX=data['label']


  for i in range (1,13000,360):
     x=x+1
    for j in range (i,360*x,1):
        if ((ScoreX  > 0.3) and (labelX ==0)):
            count=count+1
 print("count=",count)

标签: pythonpandaspython-2.7list

解决方案


您还可以使用参数nrowsskiprows将其分解为块。我建议不要使用iterrows,因为这通常非常慢。如果您在读取值时这样做,并分别保存这些块,那么它将跳过 iterrows 部分。如果您想拆分成块(这似乎是您尝试做的中间步骤),这是用于文件读取的。

另一种方法是通过查看值是否属于每个集合来使用生成器进行子集化:[[1..360], [360..712], ..., [12640..13000]]

因此,编写一个函数来获取索引可被 360 整除的块,如果索引在该范围内,则选择该特定子集。

我只是将这些方法写下来作为您可能想要尝试的替代想法,因为在某些情况下您可能只需要一个子集而不是所有块用于计算目的。


推荐阅读