【问题标题】:Add a row with means of columns to pandas DataFrame向 pandas DataFrame 添加具有列方式的行
【发布时间】:2017-08-09 12:00:13
【问题描述】:

我有一个 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 保存为熊猫系列的方法,但最终得到了这样的结果:

    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]

我想知道是否有更有效的方法将索引为“mean”的行和每列的平均值添加到 pandas DataFrame 的底部。

【问题讨论】:

    标签: python pandas dataframe mean


    【解决方案1】:

    loc 用于setting 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
    

    【讨论】:

    • 代码添加了一列,而不是一行。我错过了什么?
    • @DustinSun 它按预期为我工作。正如提问者所要求的那样,取每一列的平均值并将结果值添加到该列下方作为行。
    • df['mean'] = ... 会添加一列,但 df.loc['mean'] = ... 按预期添加一行。
    猜你喜欢
    • 2018-08-13
    • 1970-01-01
    • 2020-11-07
    • 2023-01-15
    • 2022-11-10
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多