【发布时间】:2019-02-15 14:18:36
【问题描述】:
我有一个日期范围为 2018 年 1 月 12 日至 8 月 3 日的数据集,其中包含一些值:
df_luminosidadDataFrame的维数为:
df_luminosidad.shape
(9752, 2)
每行数据有一个半小时的频率。第一行从2018-01-12开始
df_luminosidad.iloc[0]
Fecha: 2018-01-12 00:17:28
Luz (lux) 1
Name: 0, dtype: object
最后一行结束于2018-08-03
df_luminosidad.tail(1)
Fecha: Luz (lux)
9751 2018-08-03 23:44:59 1
如上所述,有许多行对应于一天。
我想创建一个新的数据框,仅选择 1 天作为 Fecha: 列的值(没有重复的日期),并从 Luz(lux) column 的选定日期的所有现有值中选择平均值
看起来像这样:
| Fecha: | Luz(lux) - Average each day values |
| 2018-01-12 | 9183.479167 |
| 2018-01-13 | 7431.8125 |
| 2018-01-14 | 11073.1875 |
| 2018-01-15 | 11456.25 |
| . . |
| . . |
| . . |
| 2018-08-03 | 11331.229167 |
我正在使用pd.date_range() 函数创建一个数据帧,其值从df_luminosidad 前一个数据帧到指定频率,例如表示为@piRSquaredin this answer
从 1 月 12 日到 8 月 03 日有 203 天(28 周),那么我选择 204 就像period 属性,我使用的是freq 属性日历日频率D
df = pd.DataFrame(dict(
Date=pd.date_range('2018-01-12', periods=204, freq='D'),
Value=df_luminosidad['Luz (lux)'].mean()
))
直到这里,该方法还不错,但我对如何计算使用pd.date_range 选择的每一天的Luz (lux) 值的平均值存在疑问,因为此时我只得到相同的平均值从2018-01-12 到2018-08-03 的所有日子,如下所示:
| Date | Value |
| 2018-01-12 | 11228.888331 |
| 2018-01-13 | 11228.888331 |
| 2018-01-14 | 11228.888331 |
| 2018-01-15 | 11228.888331 |
| . . |
| . . |
| . . |
| 2018-08-03 | 11331.229167 |
我已经通过每个 Fecha: 列值生成了一个数据框,我可以分别获得它们的平均值,但这迫使我阅读
每个文件日单独。
如何生成一种循环方式,将一天中的所有值分组为每天的唯一平均值并将它们放入一个数据框中?
【问题讨论】:
-
发布示例 df 和预期输出 df,而不是图像
标签: python pandas dataframe frequency series