我正在使用 Python 3.6,试图获取 Pandas 数据帧(pandas 版本 0.23.4)一行的子集中某些值的平均值。我使用 .loc[] 获取值,然后尝试使用来自 python 统计包的 mean() 获取它们的平均值,如下所示:
import statistics as st
rows = ['row1','row2','row3']
somelist = []
for i in rows:
a = df.loc[i,"Q1":"Q7"]
somelist.append(st.mean(a))
我最终得到的答案没有任何小数位。如果我手动将项目 Q1:Q7 的答案写入列表,结果如下:
a = st.mean([2,3,4,4,2,6,5])
print(a)
Out: 3.7142857142857144
但是,如果该序列是我从数据框中提取的序列,我会得到一个没有小数位的平均值,如下所示:
a = st.mean(df.loc[i,"Q1":"Q7"])
Out: 3
显然这是因为它认为它是一个 numpy.int64 而不是一个浮点数。即使我将数据帧中的切片转换为列表,也会发生这种情况,如下所示:
a = st.mean(list(df.loc[i,"Q1":"Q7"]))
Out: 3
奇怪的是,如果我使用 .mean() 就不会发生这种情况:
a = df.loc[i,"Q1":"Q7"].mean()
Out: 3.7142857142857144
我仔细检查了 st.stdev() 方法,它似乎工作正常。这是怎么回事?为什么要自动打印出平均值的整数?谢谢!
米脂
一只甜甜圈
相关分类