首页 > 解决方案 > 如何在python中的iterrows中找到列中的平均值

问题描述

我有一个包含 100 多列的数据框,其中 col10 之后的所有列都是浮点类型。我想做的是找到循环内特定范围列的平均值。这是我到目前为止所尝试的,

for index,row in df.iterrows():
    a = row.iloc[col30:col35].mean(axis=0)

不幸的是,这会返回意外的值,我无法获得每一行的 col30、col31、col32、col33、col34、col35 的平均值。有人可以帮忙吗?

标签: pythonpandas

解决方案


尝试:

df.iloc[:, 30:35].mean(axis=1)

您可能需要将 30:35 调整为 29:35(您可以删除 .mean 并尝试了解 .iloc 的工作原理)。通常在 pandas 中,您希望尽可能避免循环。.iloc 方法允许您根据位置索引选择索引和列。然后,您可以使用 .mean() 与 axis=1 对第一个轴(行)求和。

您确实应该在我复制该示例的地方放一个小示例,请参阅下面的评论中提到的解决方案有效的地方。

import pandas as pd
df = pd.DataFrame({i:val for i,val in enumerate(range(100))}, index=list(range(100)))
for i,row in df.iterrows():
     a = row.iloc[29:25].mean() # a should be 31.5 for each row
     print(a)

推荐阅读