Python 如何在pandas中创建ceil日期列

Python 如何在pandas中创建ceil日期列,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我想在数据框中添加一列,该列是月底日期。基于此,我尝试了以下方法: import numpy as np import pandas as pd dates = ['2014-06-02', '2014-06-03', '2014-06-04', '2014-06-05', '2014-06-06'] sp500_index = [1924.969971, 1924.23999, 1927.880005, 1940.459961, 1949.439941] df_sp500 = pd.Data

我想在数据框中添加一列,该列是月底日期。基于此,我尝试了以下方法:

import numpy as np
import pandas as pd

dates = ['2014-06-02', '2014-06-03', '2014-06-04', '2014-06-05', '2014-06-06']
sp500_index = [1924.969971, 1924.23999, 1927.880005, 1940.459961, 1949.439941]
df_sp500 = pd.DataFrame({'Date' : dates, 'Close' : sp500_index})
sp500['Date'] = pd.to_datetime(sp500['Date'], format='%Y-%m-%d')
df_sp500['EOM'] = df_sp500['Date'].dt.ceil('M')  # breaks on this line
#df_sp500 = df_sp500[df_sp500['Date'] == df_sp500['EOM']]

df_sp500
但我得到了这个错误信息:

AttributeError:只能对datetimelike值使用.dt访问器

我之所以要添加此列,是为了使用它过滤掉除注释行中显示的EOM日期以外的所有日期。

基于文档

要接收索引的频率级别。必须是固定频率 喜欢“S”(第二个)而不是“我”(月末)

因此,我们可能会使用
MonthBegin
来处理您的案例

df_sp500['Date']- pd.offsets.MonthBegin(1) #pd.offsets.MonthEnd(1)
0   2014-06-01
1   2014-06-01
2   2014-06-01
3   2014-06-01
4   2014-06-01
Name: Date, dtype: datetime64[ns]

这已内置到带有的
datetime
。与计算新列不同,只需使用以下子集:

df_sp500[df_sp500.Date.dt.is_month_end]
输入数据
您有
df_sp500=
sp500['Date']=
。它是哪一个?对熊猫(来自R)来说是非常新的。意图是
df_sp500=
创建数据帧和
sp500['Date']=
行,以将
日期
字段从字符串转换为日期时间。@ALollz答案正是我想要的,但感谢您提供了这个伟大的答案。正是我想要的。谢谢
df_sp500[df_sp500.Date.dt.is_month_end]
dates = ['2014-06-02', '2014-06-03', '2014-06-04', '2014-06-05', '2014-06-06']
sp500_index = [1924.969971, 1924.23999, 1927.880005, 1940.459961, 1949.439941]

df_sp500 = pd.DataFrame({'Date' : dates, 'Close' : sp500_index})
df_sp500['Date'] = pd.to_datetime(df_sp500['Date'], format='%Y-%m-%d')