python - 在 Python 中为数据框设置每月最后一个工作日

标签 python pandas date finance

我有一个下面的数据框,并且想要对具有该月最后一个工作日的数据框进行子集化以分隔数据框。

df = 日期 开盘价 最低价 收盘价 调整收盘量 0 2007-06-18 0.33979 0.33979 0.33979 0.33979 0.33979 1591888 1 2007-06-29 0.33074 0.33074 0.33074 0.33074 0.33074 88440 2 2007-06-20 0.33526 0.33526 0.33526 0.33526 0.33526 3538 3 2007-06-21 0.32113 0.32113 0.32113 0.32113 0.32113 3550 4 2007-06-22 0.34713 0.34713 0.34713 0.34713 0.34713 670

df_输出=

日期 开盘价 最低价 收盘价 调整收盘量 1 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/

相关文章:

php - ZF2 始终验证日期和时间格式 PT_BR 输入似乎不是有效日期

python - 如何使用 python 通过网络传递 Unix 命令

python - Flask-Migrate/Alembic 未使用基类和多文件结构检测模型

python - 在 Pandas 中读取具有历史日期的 CSV 文件

python - 查找同时满足两个条件的行

r - 润滑减法仅返回一个数值

python - 如何在变量中设置多行 json?

python - OpenCV 从源 Windows 生成错误 "RC Object"

python - 具有多索引的 Pandas Dataframe 中 2 列之间的差异

javascript - Date.UTC() 返回上个月的最后一天,而 getUTCFullYear()、getUTCMonth() 正确返回正确月份的第一天