1 回答

TA贡献1829条经验 获得超13个赞
Frq如果需要每组的最大值首先重塑,然后wide_to_long过滤掉0值:DataFrame.queryDataFrame.sort_values
df = (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 Seq
index
2 12:46:17 1 4200.0 30700.0
16 12:49:29 1 4160.0 30690.0
3 12:46:18 1 3060.0 30700.0
4 12:46:18 1 3060.0 30700.0
5 12:46:19 1 3060.0 30700.0
6 12:46:20 1 3060.0 30700.0
6 12:46:20 2 4240.0 30700.0
5 12:46:19 2 4220.0 30700.0
3 12:46:18 2 4200.0 30700.0
4 12:46:18 2 4200.0 30700.0
8 12:46:38 2 3060.0 30700.0
0 12:43:04 3 4620.0 30671.0
8 12:46:38 3 4600.0 30700.0
1 12:46:05 3 3280.0 30700.0
7 12:46:37 3 3060.0 30700.0
15 12:48:35 3 3020.0 30690.0
最后使用每组的最大值DataFrame.drop_duplicates:
df1 = df.drop_duplicates('group')
print (df1)
Time group Frq Seq
index
2 12:46:17 1 4200.0 30700.0
6 12:46:20 2 4240.0 30700.0
0 12:43:04 3 4620.0 30671.0
添加回答
举报