计算完整数据帧中每个 Sequence_ID 的最大频率

我有一个像这样的数据框:


Time        Frq_1   Seq_1       Frq_2   Seq_2       Frq_3   Seq_3

12:43:04    0.00    30668.00    0.00    30670.00    4620.00 30671.00

12:46:05    0.00    30699.00    0.00    30699.00    3280.00 30700.00

12:46:17    4200.00 30700.00    0.00    30704.00    0.00    30704.00

12:46:18    3060.00 30700.00    4200.00 30700.00    0.00    30700.00

12:46:18    3060.00 30700.00    4200.00 30700.00    0.00    30700.00

12:46:19    3060.00 30700.00    4220.00 30700.00    0.00    30700.00

12:46:20    3060.00 30700.00    4240.00 30700.00    0.00    30700.00

12:46:37    0.00    30698.00    0.00    30699.00    3060.00 30700.00

12:46:38    0.00    30699.00    3060.00 30700.00    4600.00 30700.00

12:47:19    0.00    30668.00    0.00    30669.00    0.00    30669.00

12:47:20    0.00    30667.00    0.00    30667.00    0.00    30668.00

12:47:20    0.00    30667.00    0.00    30667.00    0.00    30668.00

12:47:21    0.00    30667.00    0.00    30667.00    0.00    30668.00

12:47:21    0.00    30665.00    0.00    30665.00    0.00    30665.00

12:47:22    0.00    30665.00    0.00    30665.00    0.00    30665.00

12:48:35    0.00    30688.00    0.00    30690.00    3020.00 30690.00

12:49:29    4160.00 30690.00    0.00    30691.00    0.00    30693.00

我想检查总数据框并找到以下条件的结果:


频率不为空的 Sequence_ID

频率为最大值(如果多个 Sequence_ID 具有非零频率)

我希望我的结果如下:


Time         Sequence_ID   Frequency

12:43:04     4620          30671 

12:49:29     4160          30690 

12:46:38     4600          30700 

时间 = 对应于 (Sequence_ID & Frequency) 的行


呼啦一阵风
浏览 108回答 1
1回答

烙印99

Frq如果需要每组的最大值首先重塑,然后wide_to_long过滤掉0值:DataFrame.queryDataFrame.sort_valuesdf = (pd.wide_to_long(df.reset_index(),                      stubnames=['Frq','Seq'],                     i=['Time','index'],                     j='group',                     sep='_')       .reset_index(level=[0,2])       .query("Frq != 0")       .sort_values(['group','Frq'], ascending=[True, False])       )print (df)           Time  group     Frq      Seqindex                                  2      12:46:17      1  4200.0  30700.016     12:49:29      1  4160.0  30690.03      12:46:18      1  3060.0  30700.04      12:46:18      1  3060.0  30700.05      12:46:19      1  3060.0  30700.06      12:46:20      1  3060.0  30700.06      12:46:20      2  4240.0  30700.05      12:46:19      2  4220.0  30700.03      12:46:18      2  4200.0  30700.04      12:46:18      2  4200.0  30700.08      12:46:38      2  3060.0  30700.00      12:43:04      3  4620.0  30671.08      12:46:38      3  4600.0  30700.01      12:46:05      3  3280.0  30700.07      12:46:37      3  3060.0  30700.015     12:48:35      3  3020.0  30690.0最后使用每组的最大值DataFrame.drop_duplicates:df1 = df.drop_duplicates('group')print (df1)           Time  group     Frq      Seqindex                                  2      12:46:17      1  4200.0  30700.06      12:46:20      2  4240.0  30700.00      12:43:04      3  4620.0  30671.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python