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')