在无时间序列数据集中创建新列周

时间:2018-03-11 18:09:37

标签: python pandas reshape pandas-groupby

我正在尝试在我的数据框架上创建时间结构。

我有一个名为'day'的数据框,df ['day']从1到365跨越,缺少数字,看起来像

df = pd.DataFrame({'day': [1,2,2,2,3,4,5,5,8,8,9,9,10,11,11,12,13]}) 

我想创建一个新的列'weekOftheYear',这样每5天显示一周。结果数据框应如下所示:

day  week
1     1
2     1
2     1
2     1
3     1  
...   ...
8     2
8     2
9     2
...   ...

提前感谢您的任何提示!

2 个答案:

答案 0 :(得分:2)

我认为需要:

df['week'] = (df['day'] + 2) // 7 + 1

答案 1 :(得分:1)

我不确定为什么你会每隔5天显示一下你想要显示的内容,但我相信这个解决方案对你有用。

df['week'] = df['day'].apply(lambda x: x//7+1)

OP评论后编辑。

如果您想要获得1和5-11等等,那么您只需要将所有日期都移动n

df = pd.DataFrame({'day': [1,1,2,2,5,5,6,6,6,7,8,8,9,9]})
df['fixed_days'] = df['day'] + 2
df['week'] = df['fixed_days'].apply(lambda x: x//7+1)
df.drop('fixed_days', axis=1, inplace=True)
df.head()

打印

    day week
0   1   1
1   1   1
2   2   1
3   2   1
4   5   2