python - 如何在python中的iterrows中找到列中的平均值
问题描述
我有一个包含 100 多列的数据框,其中 col10 之后的所有列都是浮点类型。我想做的是找到循环内特定范围列的平均值。这是我到目前为止所尝试的,
for index,row in df.iterrows():
a = row.iloc[col30:col35].mean(axis=0)
不幸的是,这会返回意外的值,我无法获得每一行的 col30、col31、col32、col33、col34、col35 的平均值。有人可以帮忙吗?
解决方案
尝试:
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)
推荐阅读
- wpf - 奇怪的边框仍然停留在按钮上;即使在修改了控制模板之后
- kotlin - 为什么 Kotlin 内联函数参数不能为空
- android - 有什么方法可以使用 Detox 在 Android 上的 Picker 中选择一个项目?
- database - 戈姆“插入忽略”
- python - 如何使用 pandas 将层次列合并为 1 列?
- php - (Laravel/PHP) SQL 查询,从表中选择与数组中的 product_id 和variation_id 匹配的所有订单
- perl - Perl:将哈希作为子哈希添加到简单哈希
- node.js - NodeJs Express 如何处理从前端发送的项目(参数)?
- assembly - 引导扇区如何写入磁盘。为什么 io.sys 和 msdos.sys 是 11 个字符长
- android - E/ExoPlayerImplInternal:源错误,从本地存储播放 .MP4 文件时