我有一個 Pandas DataFrame,每天進行多次測量(例如每小時測量,但不一定是這種情況),但我只想保留某個列是每日最小值的小時。
我的資料框中的一天看起來有點像這樣
DATE Value Distance
17 1979-1-2T00:00:00.0 15.5669870447436 34.87
18 1979-1-2T01:00:00.0 81.6306803714536 31.342
19 1979-1-2T02:00:00.0 83.1854759740486 33.264
20 1979-1-2T03:00:00.0 23.8659679630303 32.34
21 1979-1-2T04:00:00.0 63.2755504429306 31.973
22 1979-1-2T05:00:00.0 91.2129044773733 34.091
23 1979-1-2T06:00:00.0 76.493130052689 36.837
24 1979-1-2T07:00:00.0 63.5443183375785 34.383
25 1979-1-2T08:00:00.0 40.9255407683688 35.275
26 1979-1-2T09:00:00.0 54.5583051827551 32.152
27 1979-1-2T10:00:00.0 26.2690011881422 35.104
28 1979-1-2T11:00:00.0 71.3059740399097 37.28
29 1979-1-2T12:00:00.0 54.0111262724049 38.963
30 1979-1-2T13:00:00.0 91.3518048568241 36.696
31 1979-1-2T14:00:00.0 81.7651763485069 34.832
32 1979-1-2T15:00:00.0 90.5695814525067 35.473
33 1979-1-2T16:00:00.0 88.4550315358515 30.998
34 1979-1-2T17:00:00.0 41.6276969038137 32.353
35 1979-1-2T18:00:00.0 79.3818377264749 30.15
36 1979-1-2T19:00:00.0 79.1672568582629 37.07
37 1979-1-2T20:00:00.0 1.48337999844262 28.525
38 1979-1-2T21:00:00.0 87.9110385474789 38.323
39 1979-1-2T22:00:00.0 38.6646421460678 23.251
40 1979-1-2T23:00:00.0 88.4920153764757 31.236
我想保留每天具有最小“距離”的所有行,因此對于上面顯示的一天,一個只剩下一行(索引值為 39 的那一行)。我知道如何折疊資料框,以便只剩下距離列。我可以這樣做 - 如果我首先將 DATE 設定為索引 - 與
df_short = df.groupby(df.index.floor('D'))["Distance"].min()
但我也希望最終結果中的值列。如何保留所有列?如果我這樣做,它似乎不起作用
df_short = df.groupby(df.index.floor('D')).min(["Distance"])
這確實將所有列保留在最終結果中,但結果似乎是錯誤的,所以我不確定這是做什么的。也許這已經發布在某個地方,但我很難找到它。
uj5u.com熱心網友回復:
您可以使用aggregate
df_short = df.groupby(df.index.floor('D')).agg({'Distance': min, 'Value': max})
如果您希望保留Value的列與最小Distance列相同:
df_short = df.loc[df.groupby(df.index.floor('D'))['Distance'].idxmin(), :]
uj5u.com熱心網友回復:
制作日期時間索引:
df.DATE = pd.to_datetime(df.DATE) # If not already datetime.
df.set_index('DATE', inplace=True)
重新采樣并找到最小距離的位置:
df.loc[df.resample('D')['Distance'].idxmin()]
輸出:
Value Distance
DATE
1979-01-02 22:00:00 38.664642 23.251
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/474767.html
