【发布时间】:2021-09-29 20:46:54
【问题描述】:
我正在尝试在包含形状“43722 行 × 62 列”的数据框“combined_sf2”中应用 .mean 函数。
我想从我的数据框中为每一行计算一系列不同属性中的一些值的平均值。然后生成一个名为“wkQtyEXTMean”的新属性/列,其中将包含每一行的所选属性值范围的平均值。
我尝试通过统计方法应用 .mean 函数创建以下函数:
#function create to take the range of the selected attributes, if the sum is zero, so return the message 'thre is no mean', if not, calculate the mean
import statistics
def wkQtyEXTMean(row):
if (row['wk13QtyEXT']+row['wk12QtyEXT']) == 0:
return 'No mean'
else:
return statistics.mean(row['wk13QtyEXT']+row['wk12QtyEXT'])
#generating new column
combined_sf2['wkQtyEXTMean'] = combined_sf2.apply(wkQtyEXTMean, axis=1)
但我收到以下错误:
("'int' object is not iterable", 'occurred at index 43721')
有什么建议吗?
【问题讨论】:
-
确保索引 43721(combined_sf2.iloc[43721]) 处的“wk13QtyEXT”和“wk12QtyEXT”列的数据类型正确。它们应该是一个整数列表 /floats
-
row['wk13QtyEXT']的内容是什么?row['wk12QtyEXT']?mean需要一个充满数字的迭代。row['wk13QtyEXT']+row['wk12QtyEXT']看起来像一个数字,而不是可迭代的。 -
好吧,那为什么不直接使用
mean呢?如果mean那么statistics.mean([row['wk13QtyEXT'], row['wk12QtyEXT']]) -
但有时,我在这行的内容中有 0 和 0。所以我之所以在函数中创建这条规则是为了返回“No mean”,因为 (0+0)/2 不存在。
-
你的意思是直接做 sum/len ?
标签: python pandas average mean