我有一个包含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)
答案 0 :(得分:0)
您还可以使用参数nrows
或skiprows
将其分解为大块。我建议不要使用iterrows
,因为那通常很慢。如果在读取值并单独保存这些块时执行此操作,则它将跳过iterrows部分。如果要拆分成块,则用于文件读取(这似乎是您要执行的操作的中间步骤)。
另一种方法是使用生成器子集,方法是查看值是否属于每个集合: [[1..360],[360..712],...,[12640..13000]]
因此编写一个函数,该函数使用索引可以被360整除的块,如果索引在该范围内,则选择该特定子集。
我只是将这些方法写下来,作为您可能想使用的替代想法,因为在某些情况下,您可能只需要一个子集而不是所有块即可进行计算。