我有一个pandas DataFrame,其中包含一些随时间变化的传感器读数,如下所示:
diode1 diode2 diode3 diode4
Time
0.530 7 0 10 16
1.218 17 7 14 19
1.895 13 8 16 17
2.570 8 2 16 17
3.240 14 8 17 19
3.910 13 6 17 18
4.594 13 5 16 19
5.265 9 0 12 16
5.948 12 3 16 17
6.632 10 2 15 17
我编写了代码来添加另一行,其中包含每列的平均值:
# List of the averages for the test.
averages = [df[key].describe()['mean'] for key in df]
indexes = df.index.tolist()
indexes.append('mean')
df.reindex(indexes)
# Adding the mean row to the bottom of the DataFrame
i = 0
for key in df:
df.set_value('mean', key, averages[i])
i += 1
这给了我想要的结果,这是一个像这样的DataFrame:
diode1 diode2 diode3 diode4
Time
0.53 7.0 0.0 10.0 16.0
1.218 17.0 7.0 14.0 19.0
1.895 13.0 8.0 16.0 17.0
2.57 8.0 2.0 16.0 17.0
3.24 14.0 8.0 17.0 19.0
3.91 13.0 6.0 17.0 18.0
4.594 13.0 5.0 16.0 19.0
5.265 9.0 0.0 12.0 16.0
5.948 12.0 3.0 16.0 17.0
6.632 10.0 2.0 15.0 17.0
mean 11.6 4.1 14.9 17.5
然而,我确信这不是添加行的最有效的方法。我尝试使用append
,并将平均值保存为pandas Series,但没有产生预期的输出。我想知道是否有更有效的方法将索引为'mean'的行和每列的平均值添加到pandas DataFrame的底部。
2条答案
按热度按时间68de4m5k1#
使用
loc
进行放大设置:结果输出:
qyyhg6bp2#
对于单个统计量,
loc
非常有效。另一种方法是使用concat
。如果需要附加多个统计信息,则该选项特别有用:
要附加一大堆统计信息,如
std
,median
,mean
等(OP已经计算过),concat
再次有用: