添加一行,并用列的列到pandasdataframe

问题描述 投票:0回答:2

我有一个熊猫数据框架,该框架由某些随着时间的时间进行的传感器读数组成:

       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
这给了我我想要的结果,这是这样的数据框架:

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 dataframe的底部。
    

python pandas dataframe statistics concatenation
2个回答
75
投票

loc

用放大器来设置:
df.loc['mean'] = df.mean()

结果输出:
       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

对于单个统计数据,

1
投票
效果很好。另一种方法是使用

concat

df1 = pd.concat([df, df.apply(['mean'])])
如果需要附加多个统计信息,则特别有用:

df1 = pd.concat([df, df.apply(['mean', 'sum', 'median'])])
要附加一大堆统计信息,例如

std

median

mean

等(OP已经计算),
concat
再次有用:
df1 = pd.concat([df, df.describe()])
	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.