Python 如何迭代数据帧行&;在每次迭代中创建一个数据帧

Python 如何迭代数据帧行&;在每次迭代中创建一个数据帧,python,Python,我有一个熊猫数据框gmat。示例数据如下所示 YEAR student score mail_id phone Loc 2012 abc 630 abc@xyz.com 1-800-000-000 pqr 2012 pqr 630 pqr@xyz.com 1-800-000-000 abc 我希望迭代此数据帧,并从for循环中此数据帧的行创建一个数据帧,并使用该数据帧进行计算。for循环中的每个迭代都将用迭代中的当前行覆

我有一个熊猫数据框gmat。示例数据如下所示

YEAR  student score mail_id      phone            Loc
2012  abc     630   abc@xyz.com  1-800-000-000   pqr
2012  pqr     630   pqr@xyz.com  1-800-000-000   abc
我希望迭代此数据帧,并从for循环中此数据帧的行创建一个数据帧,并使用该数据帧进行计算。for循环中的每个迭代都将用迭代中的当前行覆盖以前的数据帧。例如,For循环中的第一个数据帧如下所示

YEAR  student score mail_id      phone            Loc
2012  abc     630   abc@xyz.com  1-800-000-000   pqr
YEAR  student score mail_id      phone            Loc
2012  pqr     630   pqr@xyz.com  1-800-000-000   abc
覆盖第一行后的第二个数据帧如下所示

YEAR  student score mail_id      phone            Loc
2012  abc     630   abc@xyz.com  1-800-000-000   pqr
YEAR  student score mail_id      phone            Loc
2012  pqr     630   pqr@xyz.com  1-800-000-000   abc
所以我尝试了以下代码

for row in gmat.iterrows():
    
    df=pd.DataFrame(list(row))
但在检查时,我发现df没有正确填充。它只显示了两列 你能建议我怎么做吗

基于Georgy的建议,我也尝试了这个方法,我在gmat.iterrows()中使用了
作为索引行。在这里,我得到的行是
pd.Series
,然后我使用
gmrow=pd.DataFrame(row)
,但原始数据的列标题是行。我得到的数据

2012年
学生abc
得分630
邮件idabc@xyz.com
电话1-800-000-000
Loc pqr

您可以像这样分割数据帧:

对于gmat.iterrows()中的索引行:
x=df[索引:索引+1]
打印(“打印迭代次数:”,x)


print
只是一个例子。您可以使用
x

进行所需的转换,如有可能,请参阅上面接受的答案。对于gmat.iterrows()中的索引行,它应该是
。在您的例子中,
是一个整数索引和一个
pd.Series
的元组。这就是为什么会有“2列”。另外,当您修复此问题时,您不需要将
转换为
列表
@Georgy,请参阅我的原始帖子。我尝试了你的建议,但是我得到的输出格式与我想要的不同。数据帧(行)。T
会将其转换为您想要的格式。如果您从未使用
行,则无需使用
ItErrors
。对于范围(…)中的索引,简单的
就足够了。请详细说明如何使用范围来迭代数据帧?据我所知,iterrows返回带有原始模式的数据帧。Range函数将接受int输入,并且在数据帧上使用时可能会抛出int object is not iterable错误。我真的不明白什么是不清楚的。是的,
iterrows
生成数据帧的行以及相应的索引,但如果您实际使用这些行,则使用它是合理的。在您的情况下,您只使用索引。使用
或根本不使用
ItErrors
。因此,例如,
对于df.iterrows()中的u,row():print(pd.DataFrame(row.T)
或者
对于范围内的i(df.shape[0]):print(df[i:i+1])
当然!谢谢你的解释,先生!