1

我有一个原始数据的数据框:

df
Out: 
              Date_time   10a   10b   10c   40a   40b   40c  100a  100b  100c
120 2019-02-04 16:00:00  26.7  26.9   NaN  26.7   NaN   NaN  24.9   NaN   NaN
121 2019-02-04 17:00:00  23.4  24.0  23.5  24.3  24.1  24.0  25.1  24.8  25.1
122 2019-02-04 18:00:00  23.1  24.0  23.3  24.3  24.1  24.0  25.1  24.8  25.1
123 2019-02-04 19:00:00  22.8  23.8  22.9  24.3  24.1  24.0  25.1  24.8  25.1
124 2019-02-04 20:00:00   NaN  23.5  22.6  24.3  24.1  24.0  25.1  24.8  25.1

我希望创建一个包含“Date_time”列和几列数据均值的 DataFrame。在这种情况下,每行将有 3 个均值,10、40 和 100 各有一个,计算每个编号区间的 a、b 和 c 的平均值。

means
Out: 
              Date_time       10cm       40cm  100cm
120 2019-02-04 16:00:00  26.800000  26.700000   24.9
121 2019-02-04 17:00:00  23.633333  24.133333   25.0
122 2019-02-04 18:00:00  23.466667  24.133333   25.0
123 2019-02-04 19:00:00  23.166667  24.133333   25.0
124 2019-02-04 20:00:00  23.050000  24.133333   25.0

我尝试了以下方法(取自此答案):

means = df['Date_time'].copy()

means['10cm'] = df.loc[:, '10a':'10c'].mean(axis=1)

但这会导致所有平均值聚集在“Date_time”列底部的一个单元格中,并给出“10cm”作为单元格的索引。

means
Out: 
120                                   2019-02-04 16:00:00
121                                   2019-02-04 17:00:00
122                                   2019-02-04 18:00:00
123                                   2019-02-04 19:00:00
124                                   2019-02-04 20:00:00
10cm    120    26.800000
121    23.633333
122    23.46...
Name: Date_time, dtype: object

我相信这与当我跨“Date_time”列复制时,它是一个 Series 对象而不是一个 DataFrame 对象有关,但我不确定。任何指针将不胜感激!

在此处输入图像描述

4

1 回答 1

2

这是系列问题。结果写出这个问题帮助我意识到了这个问题!我的解决方案是使用 to_frame() 更改初始创建方式:

means = df['Date_time'].copy().to_frame()

如果其他人有类似的问题,我会留下这个问题,以免他们不得不花时间把它全部写出来!

于 2021-09-25T09:39:00.467 回答