我有一个看起来像这样的df:
Date Value
49 2018-11 6
50 2018-12 8
51 2018-12 2
52 2018-12 5
53 2018-12 2
54 2018-12 14
55 2019-01 8
56 2019-01 20
57 2019-01 5
58 2019-02 2
59 2019-02 5
61 2019-02 14
62 2019-02 2
60 2019-02 12
63 2019-02 8
64 2019-02 1
我数据中的日期字段已转换为datetime。我想知道如何排除最长日期(例如“ 2019-02”)。我想比较Value(全部日期)的总和与Vale的总和减去最近一个月的数据之间的变化,以了解这种变化。
有没有一种方法可以在不特别注明日期的情况下(例如'2019-02')?例如,我尝试使用loc过滤出数据框上的最大日期,但一直出现错误,还尝试将索引设置为日期。
是否可以使用loc调出并过滤出最大日期?我问是因为我想创建一个月度报告,而不必每次都要刷新分析时都在代码中手动更改日期(例如``2019-02'')。
感谢您的帮助/建议。
亲切的问候
答案 0 :(得分:1)
将列转换为日期时间,并用boolean indexing
过滤最大日期时间的所有行,并用max
值过滤不等于Series.ne
的所有行:
d = pd.to_datetime(df['Date'], format='%Y-%m')
df = df[d.ne(d.max())]
print (df)
Date Value
49 2018-11 6
50 2018-12 8
51 2018-12 2
52 2018-12 5
53 2018-12 2
54 2018-12 14
55 2019-01 8
56 2019-01 20
57 2019-01 5
将列转换为datetime
的解决方案:
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m')
df = df[df['Date'].ne(df['Date'].max())]
print (df)
Date Value
49 2018-11-01 6
50 2018-12-01 8
51 2018-12-01 2
52 2018-12-01 5
53 2018-12-01 2
54 2018-12-01 14
55 2019-01-01 8
56 2019-01-01 20
57 2019-01-01 5