Python 根据另一个日期列及其第一个日期计算时间(以天为单位)

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

我有一个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                 
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