我有一个包含两列日期和值的数据框。
我想添加一个名为week_number的新列,该列基本上是从给定日期返回多少周
import pandas as pd
df = pd.DataFrame(columns=['Date','value'])
df['Date'] = [ '04-02-2019','03-02-2019','28-01-2019','20-01-2019']
df['value'] = [10,20,30,40]
df
日期值
0 04-02-2019 10
1 03-02-2019 20
2 28-01-2019 30
3 20-01-2019 40
假设给定日期为05-02-2019。
然后,我需要以一种方式添加一列week_number,以使Date列日期返回给定日期多少周。
输出应为
Date value week_number
0 04-02-2019 10 1
1 03-02-2019 20 1
2 28-01-2019 30 2
3 20-01-2019 40 3
我该怎么在熊猫里做
答案 0 :(得分:3)
首先用dayfirst=True
用to_datetime
将列转换为日期时间,然后用rsub
从右侧减去,将timedelta
s转换为days
,取模7
并添加1
:
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
df['week_number'] = df['Date'].rsub(pd.Timestamp('2019-02-05')).dt.days // 7 + 1
#alternative
#df['week_number'] = (pd.Timestamp('2019-02-05') - df['Date']).dt.days // 7 + 1
print (df)
Date value week_number
0 2019-02-04 10 1
1 2019-02-03 20 1
2 2019-01-28 30 2
3 2019-01-20 40 3