Python 如何迭代数据帧行&;在每次迭代中创建一个数据帧
我有一个熊猫数据框gmat。示例数据如下所示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循环中的每个迭代都将用迭代中的当前行覆
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])
当然!谢谢你的解释,先生!