我有這個資料框
date,AA
1980-01-01, 77.7
1980-01-02, 86
1980-01-03, 92.3
1980-01-04, 96.4
1980-01-05, 85.7
1980-01-06, 75.7
1980-01-07, 86.8
1980-01-08, 93.2
1985-08-13, 224.6
1985-08-14, 213.9
1985-08-15, 205.7
1985-08-16, 207.3
1985-08-17, 202.1
我想計算每年的最大值以及它發生的日期。我很掙扎,因為我確實想將日期保留為索引。
確實,我是這樣讀的:
dfr = pd.read_csv(fnamed, sep=',', header = 0, index_col=0, parse_dates=True)
我知道我可以重新采樣為
dfr_D = dfr.resample('Y').max()
但在這種情況下,我會丟失有關年內最大值位置的資訊。
我發現了這個:
idx = dfr.groupby(lambda x: dfr['date'][x].year)["A"].idxmax()
但是, dfr['date'] 似乎是列的名稱,而在我的情況下是索引中的日期,而 '.year' 不是它的屬性之一。
我有一種感覺,我應該使用“groupby”和“indexmax”。然而,我所做的所有出席,都失敗了。
提前致謝
uj5u.com熱心網友回復:
假設“日期”是日期時間型別和一列,您可以使用以下內容以每組最大值對資料進行切片:
df.loc[df.groupby(df['date'].dt.year)['AA'].idxmax().values]
輸出:
date AA
3 1980-01-04 96.4
8 1985-08-13 224.6
如果“日期”是索引:
df.loc[df.groupby(df.index.year)['AA'].idxmax().values]
輸出:
AA
date
1980-01-04 96.4
1985-08-13 224.6
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/370533.html
下一篇:將日期時間舍入到最接近的分鐘
