如何使用Pandas按子集读取CSV文件子集?

时间:2018-12-17 22:51:50

标签: python pandas python-2.7 list

我有一个包含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)

1 个答案:

答案 0 :(得分:0)

您还可以使用参数nrowsskiprows将其分解为大块。我建议不要使用iterrows,因为那通常很慢。如果在读取值并单独保存这些块时执行此操作,则它将跳过iterrows部分。如果要拆分成块,则用于文件读取(这似乎是您要执行的操作的中间步骤)。

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

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

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