给熊猫日期列序号值

时间:2021-02-08 08:44:30

标签: python pandas datetime ordinal

我有不同日期和时间的测量数据框:

>>>date       hour   value
0 29-11-2020   8     0.231
1 29-11-2020   9     0.245
2 29-11-2020   10    0.475
3 30-11-2020   8     0.214
4 30-11-2020   9     0.239
5 30-11-2020   10    0.312
...

该表描述了每天每小时的测量值。从实验的第三天到第 15 天进行测量。 我想创建一个新的列,它将实验基地的序数日加上日期,例如:

>>>date       hour   value   count
0 29-11-2020   8     0.231    3
1 29-11-2020   9     0.245    3
2 29-11-2020   10    0.475    3
3 30-11-2020   8     0.214    4
4 30-11-2020   9     0.239    4
5 30-11-2020   10    0.312    4
5 01-12-2020   8     0.312    5
5 01-12-2020   9     0.312    5
5 01-12-2020   10    0.521    5
...

(29-11是第三天,30-11是第二天...)

我看过 this 帖子,但它没有解决同样的问题(他们给出了重复的“代码”,而我想从第 3 天开始“计算”唯一日期并为每个日期指定序号。 我也尝试过使用 "tooordinal" 但它只是改变了日期值而不计算它。

1 个答案:

答案 0 :(得分:3)

将“日期”列转换为日期时间,减去第一天,取生成的 timedelta 系列的日期并添加偏移天数:

experiment_day_start = 3

df['date'] = pd.to_datetime(df['date'], dayfirst=True)
df['exp_day'] = (df['date']-df['date'].min()).dt.days + experiment_day_start

df
        date  hour  value  count  exp_day
0 2020-11-29     8  0.231      3        3
1 2020-11-29     9  0.245      3        3
2 2020-11-29    10  0.475      3        3
3 2020-11-30     8  0.214      4        4
4 2020-11-30     9  0.239      4        4
5 2020-11-30    10  0.312      4        4
6 2020-12-01     8  0.312      5        5
7 2020-12-01     9  0.312      5        5
8 2020-12-01    10  0.521      5        5