python - 给 pandas 日期列序号值

标签 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发布,但它没有解决同样的问题(他们给出重复的“代码”,而我想“计算”从第三天开始的唯一日期并为每个日期提供序号。 我也尝试过使用 "tooordinal"但它只是更改了日期值而没有计算它。

最佳答案

将“日期”列转换为日期时间,减去第一天,获取生成的 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

关于python - 给 pandas 日期列序号值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66098322/

相关文章:

c# - 转换来自不同时区的时间,包括夏令时

python - 使用南迁时Django报错: Unknown column in 'field list'

python - 如何获取一列的不同值的计数

python - 使用来自另一列的唯一值在 Pandas 数据框中创建一个新的列表列

python - Pandas groupby 总和如果组中的值

c# - 如何将整数日期转换为格式化日期字符串(即 2012009 到 2/01/2009)

python - 如何将 datetime.time 从 UTC 转换为不同的时区?

python - 错误: No module named 'ttypes'

python - ZeroMQ PUB/SUB 过滤和性能

python - 读取 csv 文件,其中列名称作为一列单元格值