for循环获取pandas中的数据框

for loop to get the dataframe in pandas

我正在尝试使用 for 循环获取数据框中的某些数据。但是当我 运行 循环时,我得到的只是数据的索引,而不是行中显示的值

import pandas as pd
import numpy as np

data = {'time' : [1,2,3,4,5,6,7,8,9,10,11,12], 'values'[290,260,288,300,310,303,329,340,316,330,308,310]}

df = pd.DataFrame(data)

for i in df:

    print(i)

我只得到索引而不是值

我也试过:

for index , values in df:

    print(values)

它给我这个错误: 无法解压不可迭代的 int 对象

我知道 iterrows 给我行,但我希望它作为一个完整的数据框而不是每一行

尝试使用 DataFrame.iterrows() :

for index,row in df.iterrows():
    
    print(row)
    # each row is a pd.Series object so to access any values call row['column_name']
    time,value = row['time'],row['value']
    print(time,value)

注: 无论如何,我想评论一下,不建议在 pandas 中使用这种类型的操作,因为它是一种非矢量化解决方案,与矢量化操作相比缺乏性能,我建议你在互联网上寻找矢量化.. .祝你好运:)

您还可以使用 df.values 遍历 DataFrame

import pandas as pd
import numpy as np

data = {'time' : [1,2,3,4,5,6,7,8,9,10,11,12], 'values':[290,260,288,300,310,303,329,340,316,330,308,310]}

df = pd.DataFrame.from_dict(data)

>>> for i in df.values:
...     print(i)
...
[  1 290]
[  2 260]
[  3 288]
[  4 300]
[  5 310]
[  6 303]
[  7 329]
[  8 340]
[  9 316]
[ 10 330]
[ 11 308]
[ 12 310]

此外,您可以根据列的 indexes 过滤所需的行

试试这个:

for ind in df.index:
     print(list(df[col][ind] for col in df.columns))

这段代码按行打印数据