我想做一份关于每日余额波动的报告。我的想法是创建一个文件夹,使用glob打开所有文件,连接并使用它来制作散点图。下面是我的示例代码:
import pandas as pd
import numpy as np
df1 = pd.DataFrame({
'BAS_DT': ['20211010','20211010','20211011','20211011','20211012','20211012'],
'REF_NO': ["VN121001211","VN121001212","VN121001211","VN121001212","VN121001212","VN121001213"],
'APPR_LIM':[1,2,1,2,2,3]})
df1.head(6)
#df1
BAS_DT REF_NO APPR_LIM
0 20211010 VN121001211 1
1 20211010 VN121001212 2
2 20211011 VN121001211 1
3 20211011 VN121001212 2
4 20211012 VN121001212 2
5 20211012 VN121001213 3
import datetime
Previous_date=datetime.datetime.today() - datetime.timedelta(days=1)
Previous_date = Previous_date.strftime('%Y%m%d')
df2=df1[df1['BAS_DT']==Previous_date]
print(df2)
#df2
BAS_DT REF_NO APPR_LIM
2 20211011 VN121001211 1
3 20211011 VN121001212 2
df3 = df1.tail(2)
print(df3)
#df3
BAS_DT REF_NO APPR_LIM
4 20211012 VN121001212 2
5 20211012 VN121001213 3
在获得前一天和前一天的数据后,我使用isin
查找哪些REF_NO已被删除:
df2['Match'] = df2['REF_NO'].isin(df3['REF_NO'])
df2 = df2[(df2['Match']==False)]
print(df2)
#df2
BAS_DT REF_NO APPR_LIM Match
2 20211011 VN121001211 1 False
但问题是,如果我在星期一做报告,而实际的Previous_date
是周末(周末没有产生新的余额),公式df2=df1[df1['BAS_DT']==Previous_date]
将返回没有任何结果。
在这种情况下我该怎么做?
感谢并致以最良好的问候
不减去datetime.timedelta(days=1)
,使用BDay
offset from pandas,它计算业务日期偏移:
import datetime
from pandas.tseries.offsets import BDay
Previous_date=datetime.datetime.today() - BDay(1)
Previous_date = Previous_date.strftime('%Y%m%d')
Previous_date
'20211008'
今天是2021-10-11
,星期一,前一个工作日是2021-10-08
。