Python 根据另一个日期列及其第一个日期计算时间(以天为单位)
我有一个df,如下所示Python 根据另一个日期列及其第一个日期计算时间(以天为单位),python,pandas,datetime,Python,Pandas,Datetime,我有一个df,如下所示 Date t_factor 2020-02-01 5 2020-02-06 14 2020-02-09 23 2020-02-03 23 2020-03-11 38 2020-02-20 29 20
Date t_factor
2020-02-01 5
2020-02-06 14
2020-02-09 23
2020-02-03 23
2020-03-11 38
2020-02-20 29
2020-02-13 30
2020-02-29 100
2020-03-26 70
从中,我想创建一个名为time_in_days的列,它将从date列的第一天开始计算,如下所示
注:此处未使用t_系数列
预期产出:
Date t_factor time_in_days
2020-02-01 5 1
2020-02-06 14 6
2020-02-09 23 9
2020-02-03 23 3
2020-03-11 38 40
2020-02-20 29 20
2020-02-13 30 13
2020-02-29 100 29
2020-03-26 70 55
从第一个日期中减去日期以获得增量
# If you have a column of strings,
# df['Date'] = pd.to_datetime(df['Date'], errors='coerce')
df['time_in_days_actual'] = (df['Date'] - df.at[0, 'Date']).dt.days + 1
df
Date t_factor time_in_days time_in_days_actual
0 2020-02-01 5 1 1
1 2020-02-06 14 6 6
2 2020-02-09 23 9 9
3 2020-02-03 23 3 3
4 2020-03-11 38 40 40
5 2020-02-20 29 20 20
6 2020-02-13 30 13 13
7 2020-02-29 100 29 29
8 2020-03-26 70 55 55
首先尝试将列更改为日期时间格式。试着用这样的方法:
import pandas as pd
lis = '''2020-02-01
2020-02-06
2020-02-09
2020-02-03
2020-02-11
2020-02-20
2020-02-13
2020-02-29
2020-02-26'''.replace(' ','') .split() # ignore this
dt = pd.to_datetime(lis)
diff = dt[6]-dt[0]
print(diff.days)
我们应该做到这一点
df = pd.DataFrame({'date':dt,'random_col':np.random.randn(len(dt))})
df['date_diff'] = df['date'].apply(lambda x: x-df.iloc[0,0])
df
40
与2020-03-11
有什么关系?@bigbaunty开始日期是2020-02-01,从2020-02-01到2020-03-11的天数是40天。@您的输入和输出数据框的date
列不匹配。@ShubhamSharma非常感谢您指出
df = pd.DataFrame({'date':dt,'random_col':np.random.randn(len(dt))})
df['date_diff'] = df['date'].apply(lambda x: x-df.iloc[0,0])
df