2017-03-17 117 views
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 

但是,我相信这不是添加该行的最有效方式。我一直在使用并另存为熊猫系列手段追加尝试,但结束了这样的事情:

diode1 diode2 diode3 diode4      mean 
0  7.0  0.0 10.0 14.0      NaN 
1  9.0  0.0 10.0 15.0      NaN 
2  10.0  5.0 14.0 20.0      NaN 
3  6.0  0.0  7.0 14.0      NaN 
4  7.0  0.0 10.0 15.0      NaN 
5  7.0  0.0  8.0 14.0      NaN 
6  7.0  0.0 11.0 14.0      NaN 
7  7.0  0.0  2.0 11.0      NaN 
8  2.0  0.0  4.0 12.0      NaN 
9  4.0  0.0  0.0  6.0      NaN 
10  NaN  NaN  NaN  NaN [11.6, 4.1, 14.9, 17.5] 

我在想,如果有添加一排索引的更有效的手段“平均值”和每列的平均值到熊猫DataFrame的底部。

回答

4

使用locsetting with enlargement

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