Python 是否基于月份从数据框中删除列?
我有两列df-“投资组合”和“日期”(datetime.DATE(2018,9,19))格式。 我正在尝试删除当前月份和上个月的行,即,如果当前月份为Python 是否基于月份从数据框中删除列?,python,pandas,dataframe,datetime,Python,Pandas,Dataframe,Datetime,我有两列df-“投资组合”和“日期”(datetime.DATE(2018,9,19))格式。 我正在尝试删除当前月份和上个月的行,即,如果当前月份为March,则应删除“Jan”和“Feb”数据。 同样,如果当月为2020年2月,则应删除“2020年1月”和“2019年12月”数据。 示例:df PORTFOLIO DATE 0 A 2018-09-19
March
,则应删除“Jan”和“Feb”数据。
同样,如果当月为2020年2月,则应删除“2020年1月”和“2019年12月”数据。
示例:df
PORTFOLIO DATE
0 A 2018-09-19
1 B 2018-03-09
2 C 2019-03-09
3 D 2020-01-02
4 E 2020-01-17
5 F 2020-02-09
6 G 2020-03-15
7 H 2019-10-05
8 I 2018-03-09
9 J 2020-01-21
10 K 2019-03-08
11 L 2019-02-12
12 M 2020-03-01
13 N 2020-02-16
我的结论是:
PORTFOLIO DATE
0 A 2018-09-19
1 B 2018-03-09
2 C 2019-03-09
3 D 2020-01-02
4 E 2020-01-17
5 H 2019-10-05
6 I 2018-03-09
7 J 2020-01-21
8 K 2019-03-08
9 L 2019-02-12
我认为您需要使用为今天创建的月份周期
period
,列值通过类似的方式进行转换,并通过减去1和2 in来测试前两个周期,因此可以通过使用~
的反转掩码进行过滤,并且:
类似的解决方案,如果需要一些范围,默认情况下包括在内,那么也要过滤now-1
和now
值:
df = df[~df['DATE'].dt.to_period('m').between(now-1, now)]
print (df)
PORTFOLIO DATE
0 A 2018-09-19
1 B 2018-03-09
2 C 2019-03-09
3 D 2020-01-02
4 E 2020-01-17
7 H 2019-10-05
8 I 2018-03-09
9 J 2020-01-21
10 K 2019-03-08
11 L 2019-02-12
我想你应该改变标题。。。误导,因为您正在删除行而不是列。学究我知道,但它是什么,它是本月的数据也应该被排除在外。G和M日期是从当前月份开始的
df = df[~df['DATE'].dt.to_period('m').between(now-1, now)]
print (df)
PORTFOLIO DATE
0 A 2018-09-19
1 B 2018-03-09
2 C 2019-03-09
3 D 2020-01-02
4 E 2020-01-17
7 H 2019-10-05
8 I 2018-03-09
9 J 2020-01-21
10 K 2019-03-08
11 L 2019-02-12