【问题标题】:Week number of the month每月的周数
【发布时间】:2018-06-07 17:47:05
【问题描述】:

pandas (python) 是否提供了一种从日期系列中轻松获取当前星期 (1:4) 的方法?

data = {'date': ['2014-05-01', '2014-05-01', '2014-05-02', '2014-05-02', '2014-05-02', '2014-05-02', '2014-05-03', '2014-05-03', '2014-05-04', '2014-05-04']}
df = pd.DataFrame(data, columns = ['date'])
df['date']=pd.to_datetime(df['date'])

def week_of_month(dt):
    """ Returns the week of the month for the specified date.
    """
    first_day = dt.replace(day=1)
    dom = dt.day
    adjusted_dom = dom + first_day.weekday()
    return int(ceil(adjusted_dom/7.0))


df ['week']=np.nan
for i in range(len(df)):
    df ['week'][i] =  week_of_month(df.date.iloc[i])

使用短数据集它可以工作,但使用大数据集需要大量资源

【问题讨论】:

  • 你的意思是 1:5,不是吗?
  • 是的,这就是我的意思。[link] (stackoverflow.com/questions/3806473/…) 在这篇文章中有答案,但仅限于特定日期。
  • 有些地区从周日开始,有些地区从周一开始。

标签: python pandas series


【解决方案1】:

问题解决了:

data = {'date_x': ['2014-05-01', '2014-05-01', '2014-05-02', '2014-05-02', '2014-05-02', '2014-05-02', '2014-05-03', '2014-05-03', '2014-05-04', '2014-05-04']}
df = pd.DataFrame(data, columns = ['date_x'])
df['date']=pd.to_datetime(df['date_x'])

df['first_day_aux']=pd.to_datetime(df['date_x'][0][:8]+'01') 
df['day']=df['date'].dt.day 
df['adjusted_dom']=df['day']+df['first_day_aux'].dt.dayofweek
df['week']=np.int_(np.ceil(df['adjusted_dom']/7.0))

【讨论】:

    猜你喜欢
    • 2017-09-26
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多