Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 逐行从数据帧读取数据_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 逐行从数据帧读取数据

Python 3.x 逐行从数据帧读取数据,python-3.x,pandas,Python 3.x,Pandas,我需要一个函数的帮助,该函数不接受任何输入,并返回一个表示从数据帧中提取的下一行数据的列表 我尝试了一些迭代器,但这种方法需要有一个输入参数 def get_next_data_as_list(): out = list(data.iloc[i]) i= i + 1 return out get_next_data_as_list() Example output: [1619.5, 1620.0, 1621.0, nan, nan, nan, nan, nan, n

我需要一个函数的帮助,该函数不接受任何输入,并返回一个表示从数据帧中提取的下一行数据的列表

我尝试了一些迭代器,但这种方法需要有一个输入参数

def get_next_data_as_list():
    out = list(data.iloc[i])
    i= i + 1
    return out

get_next_data_as_list()

Example output: [1619.5, 1620.0, 1621.0, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 1.0, 10.0,
     24.0, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 1615.0, 1614.0, 1613.0, 1612.0, 1611.0, 1610.0,
     1607.0, 1606.0, 1605.0, 1604.0, 1603.0, 1602.0, 1601.5, 1601.0, 1600.0, 7.0, 10.0, 1.0, 10.0, 20.0, 3.0, 20.0,
     27.0, 11.0, 14.0, 35.0, 10.0, 1.0, 10.0, 13.0]

一种方法是将函数视为生成器:

In [42]: df = pd.DataFrame({'x1':np.random.randn(5), 'x2':np.random.randn(5)})

In [43]: df
Out[43]:
         x1        x2
0  0.891725  0.653889
1  2.260866 -1.521131
2  0.453874  1.416261
3 -0.821557  0.586106
4  1.042644  0.556396

In [44]: def get_next_data_as_list():
    ...:     for i in range(len(df)):
    ...:         yield list(df.iloc[i])
    ...:

In [45]: for x in get_next_data_as_list():
    ...:     print(x)
    ...:
[0.8917247724868814, 0.6538894234684837]
[2.2608656845849993, -1.521131045383185]
[0.4538742078414329, 1.416260697660083]
[-0.8215569227294447, 0.5861059443795276]
[1.0426436741732399, 0.5563956233997533]
更明确地说:

In [46]: x = get_next_data_as_list()
In [47]: x.__next__()
Out[47]: [0.8917247724868814, 0.6538894234684837]

In [48]: x.__next__()
Out[49]: [2.2608656845849993, -1.521131045383185]

非常感谢,迈克尔。我意识到当函数被重新调用时,生成器会重置。实际上,我可以通过创建一个init函数来修复它,该函数返回生成器并将其分配给一个变量

```
def get_next_data_as_list_init():
    for i in range(len(data)):
        yield list(data.iloc[i])

x = get_next_data_as_list_init()
```
然后是主要功能

```
def get_next_data_as_list():
    return x.__next__()
```

只调用下一批。非常感谢你,迈克尔

非常感谢您的回复@MichaelD!!!我怎么可能只在调用函数时才连续返回每一行,而不是一次打印整行,因为我的数据集有超过1m行。我仅以print()为例,说明对get_next_data_as_list()的每次连续调用都将返回列表中的下一项。你想对每一行做什么?可能有更好的方法使用向量函数(一次对整行或整列进行操作)来完成您想要的任务,或者最好使用apply或map,具体取决于用例。该函数将把行传递给一个ML模型进行预测。我清楚地理解了你的实现,只是我没有迭代就不能孤立结果。如果这个答案有帮助,那么考虑选择它作为答案,以便以后搜索类似问题的其他人会知道这是你问题的最佳答案。code>def get_next_data_as_list():
for i in range(len(df)):
yield list(df.iloc[i])
x=get_next_data_as_list()
返回x.\uu next_u()
我试图在函数中调用u next_u()方法,但是,输出格式是否有旁白?