我有包含不同日期和时间测量值的数据框:
>>>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/