我有一个下面的数据框,并想对具有该月最后一个工作日的数据框进行子集划分。
df = Date Open High Low Close Adj Close Volume0 2007-06-18 0.33979 0.33979 0.33979 0.33979 0.33979 15918881 2007-06-29 0.33074 0.33074 0.33074 0.33074 0.33074 884402 2007-06-20 0.33526 0.33526 0.33526 0.33526 0.33526 35383 2007-06-21 0.32113 0.32113 0.32113 0.32113 0.32113 35504 2007-06-22 0.34713 0.34713 0.34713 0.34713 0.34713 670
df_output = Date Open High Low Close Adj Close Volume1 2007-06-29 0.33074 0.33074 0.33074 0.33074 0.33074 88440
我已经尝试过df = pd.to_datetime(df['Date'], format='%Y%m%d') + pd.offsets.BMonthEnd(1)
,但是无法正常工作,并且我已经查看了here,但是没有找到正确的方法。谁能帮我解决这个问题。
最佳答案
您可以这样:
# in case Date is not in datetime format:
df['Date'] = pd.to_datetime(df['Date'])
df_output = df.loc[df.Date.isin(df.Date + pd.offsets.BMonthEnd(1))]
返回:
>>> df_output
Date Open High Low Close Adj Close Volume
1 2007-06-29 0.33074 0.33074 0.33074 0.33074 0.33074 88440
说明:
df.Date + pd.offsets.BMonthEnd(1)
返回每个月中您拥有数据的一系列最后一个工作日:>>> df.Date + pd.offsets.BMonthEnd(1)
0 2007-06-29
1 2007-07-31
2 2007-06-29
3 2007-06-29
4 2007-06-29
然后,使用
loc
在数据框中找到该序列中实际Date
所在的行(使用.isin
)关于python - 子设置Python中数据框的每月最后一个工作日,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50686532/