- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已将数据集导入到 pandas DataFrame 中。每一行是特定系统 (id) 在特定时间戳 (time_stamp) 处的一个读数(振幅)。每个系统都有多个读数。
我想为每个系统选择最近的每日平均值。
这是我的数据集的示例:
df.head(6)
time_stamp amplitude
id
id1 2018-06-19 00:36:00 16163.1
id1 2018-06-19 01:19:00 16399.7
id1 2018-06-19 01:24:00 16463.3
id1 2018-06-19 03:51:00 16139.4
id2 2018-03-17 03:41:00 11886.0
id2 2018-03-17 03:41:00 12293.6
带有时间戳的列已转换为 pd.TimeStamp:
df.dtypes
time_stamp datetime64[ns]
amplitude float64
dtype: object
我首先计算每个系统的每日平均值。
为此,我用日期替换了时间戳,按系统 ID(索引)对行进行分组,并计算每个日期的平均值。这将创建一个具有 MultiIndex ['id', 'date']
的 DataFrameav = df.copy()
# work with dates rather than time stamps
av['date'] = av.time_stamp.dt.date
av.drop('time_stamp', axis=1, inplace=True)
# calculate daily means for each system
av = av.groupby([av.index,'date']).mean()
av
amplitude
id date
id1 2018-03-17 13923.500
2018-04-17 14130.325
2018-12-22 13532.650
id2 2018-03-17 12234.720
2018-04-17 12367.050
id3 2018-06-19 16291.375
此时我陷入困境。
有人可以建议我如何使用每个系统的最新平均值创建一个新的 DataFrame 吗?像这样的事情:
date amplitude
id
id1 2018-12-22 13532.650
id2 2018-04-17 12367.050
id3 2018-06-19 16291.375
谢谢
最佳答案
使用Index.get_level_values
与 Index.duplicated
,通过 ~
反转掩码并通过 boolean indexing
过滤:
print (df)
time_stamp amplitude
id
id1 2018-06-19 00:36:00 16163.1
id1 2018-06-18 01:19:00 16399.7
id1 2018-06-18 01:24:00 16463.3
id1 2018-06-20 03:51:00 16139.4
id2 2018-03-17 03:41:00 11886.0
id2 2018-03-17 03:41:00 12293.6
#simplfying solution
av = df.groupby([df.index, df['time_stamp'].dt.date.rename('date')]).mean()
#alternative
#av = df.groupby([df.index, df['time_stamp'].dt.floor('d').rename('date')]).mean()
av = av[~av.index.get_level_values('id').duplicated(keep='last')]
print (av)
amplitude
id date
id1 2018-06-20 16139.4
id2 2018-03-17 12089.8
如果将 MultiIndex
转换为列,请使用 DataFrame.drop_duplicates
:
av = df.groupby([df.index, df['time_stamp'].dt.date.rename('date')]).mean().reset_index()
av = av.drop_duplicates('id', keep='last')
print (av)
id date amplitude
2 id1 2018-06-20 16139.4
3 id2 2018-03-17 12089.8
关于python - 在具有多个系统读数的 pandas DataFrame 中,如何计算每日平均值并为每个系统选择最新平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55827499/
我在将一些 C++ 代码转换为 Arduino 时遇到问题。任何帮助,将不胜感激。 编辑 我已经成功完成了上述操作。然而,现在唯一的问题是我的 Arduino 代码准确而正确地读取了电压,但没有其他寄
我需要能够从 HealthKit 读取所有 HRV 读数,并根据它们的创建日期对它们的值进行排序。 我可以使用 SampleQuery 从 HealthKit 读取特定时间间隔内的所有读数,如下所示:
我正在尝试使用 arduino uno R3 从 DHT-11 传感器读取温度和湿度 #include #include #define DHTPIN A3 #define DHTTYPE DHT
伙计们,我是 Meteor 的新手。对于我目前的应用程序,我正在使用 openlayer,因此对于 openlayer,我调用 Template.map.onRendered 事件,该事件将加载一个
我有一个设备可以读取电气设备的 kw 值,以测量它们在特定时间的(能量消耗率)。然后将这些值发送到轮询器(它定期向设备询问这些值),并插入到数据库中。 例子: 1st reading - 10 kw
我是一名优秀的程序员,十分优秀!