如何在函数中一个接一个地加载和处理多行文本文件

时间:2019-04-12 09:13:06

标签: python python-3.x pandas loops dataframe

具有10000行的CSV文件。必须将一行放到函数中并对其进行处理。这样,它应该继续进行直到完成1万行。

例如:

print(abcd)使我获得1万行

<Grid>
  <Grid xs={12} md={7}>
    Hi there!
  </Grid>
  <Grid xs={12} md={5}>
    John Doe!
  </Grid>
</Grid>

将第一行放在此函数中进行处理

  1264984
  8765132
  654651321
  ......
  ......
  ......

返回结果

下一步,转到第二行

     def main():
           16541+(first row)

就像它应该持续到10行完成

2 个答案:

答案 0 :(得分:1)

您可以在chunksize read_csv函数中使用pandas选项。

chunksize指定一次读取的行数。因此,通过将其设置为1,您可以实现逐行处理。

import pandas as pd    
chunksize = 1
for chunk in pd.read_csv(filename, chunksize=chunksize):
    do_something(chunk)
    print(111+chunk["col1"])

在这种情况下,do_something可以是您要调用的任何函数。还要注意,在for-loop的每个循环中,chunk是一个pandas数据帧,因此您可以使用pandas的所有现有功能。

答案 1 :(得分:0)

假设由于某种原因您更喜欢逐行阅读而不使用pandas,则可以执行以下操作:

import csv

def main(num):    
     return 16541+num

dataset=list()
with open('.yourcsv.csv', 'r') as f:
    df=csv.reader(f, delimiter=",")
    for row in df:
       #following your example:
       main(row[0].astype(int)) #assuming, as in your example, that you only have one element per row
       #alternatively you can also create a dataset by appending the rows iteratively
       dataset.append(row) 

当然,您首先需要定义函数main()并使其接受一个输入

def main(num):    
     return 16541+num

该函数接受一个输入,我们在整个函数中将其标识为num。当我们插入变量row作为输入时,Python的实际作用是:

main(num=row)

因此,num是通过为其分配变量row来创建的