python - 分桶日期并检查是否在 Pandas 的日期范围之间

标签 python pandas date dataframe

如果日期介于日期字段中的日期之间,如何检查日期属于哪个类别?我不能使用 merge_asof 作为作品; pandas 只有 v0.18。

d = {'buckets': ['1D', '1W', '1M'], 'dates': ['03-05-2018', '10-05-2018', '03-06-2018']}
date_buckets = pd.DataFrame(data=d)


    buckets dates
0   1D  03-05-2018
1   1W  10-05-2018
2   1M  03-06-2018

因此,例如,如果给定日期 07-05-2018,我如何返回 1W?我需要对数百行执行此操作,因此需要高效。

谢谢,

最佳答案

您可以使用 pandas.cut对于装箱值:

import pandas as pd

d = {'buckets': ['1D', '1W', '1M'],
     'dates': ['03-05-2018', '10-05-2018', '03-06-2018']}
df_bin = pd.DataFrame(data=d)

df_bin['dates'] = pd.to_datetime(df_bin['dates'], dayfirst=True)\
                    .dt.strftime('%Y%m%d').astype(int)

df = pd.DataFrame({'date': ['07-05-2018']})
df['date'] = pd.to_datetime(df['date'], dayfirst=True)\
               .dt.strftime('%Y%m%d').astype(int)

df['Tenor'] = pd.cut(df['date'],
                     bins=df_bin['dates'],
                     labels=df_bin['buckets'].iloc[1:])

print(df)

       date Tenor
0  20180507    1W

关于python - 分桶日期并检查是否在 Pandas 的日期范围之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50159602/

相关文章:

python - 如何在Python中添加+5 GMT时间?

Python Matplotlib FuncAnimation + 保存

python - 数字处理二维数组 : dataframe vs series vs array vs numba 的最快方法

c# - 如何在 C# 中将一种日期格式更改为另一种日期格式,例如 10/10/2014 更改为 2014-10-10(年-月-日)?

ios - swift 3 此类对于键 startDate 不符合键值编码

python - Emacs preview-latex 格式化 python 注释和文档字符串

python - 在节点外标记 networkx 节点属性

python - 如何写入最后一次出现的 loc?

Python Pandas 矩阵乘法 多项运算合二为一

java 日期格式 yyyy-mm-dd.hh.MM.ss.ms