我有一个数据框,如下所示
Tenancy_ID Unit_ID Unit_Create_Date Tenancy_Start_Date
1 A 2012-09-06 13:34:15 2012-09-08 11:34:14
2 A 2012-09-06 13:34:15 2013-04-08 11:34:13
3 B 2012-09-01 11:34:15 2012-09-21 11:34:15
4 B 2012-09-01 11:34:15 2012-09-11 11:34:13
5 C 2012-06-02 13:34:15 2012-09-08 11:34:16
3 C 2012-06-02 13:34:15 2012-06-21 11:34:15
5 A 2012-09-09 10:32:17 2012-11-08 11:34:18
我想了解每个单元从First Unit_Create_Date到First Tenancy_Start_Date之间的时间差(以天为单位)。
预期输出:
Unit_ID Time_Difference_in_Days
A 2
B 10
C 19
步骤:
对于单位ID=A,
有2012-09-06 13:34:15和2012-09-09 10:32:17两个UNIT_CREATE_DATE,其中最早(第一个)的是2012-09-06 13:34:15。
同样,UNIT_ID=A有三个Tenancy_Start_Date,如2012-09-08 11:34:14、2013-04-08 11:34:13和2012-11-08 11:34:18,其中最早的是2012-09-08 11:34:14。
因此2012-09-08 11:34:14和2012-09-06 13:34:15之间的天数差为2。
将列转换为.dt.date
后使用groupby
和min
尝试
m = (df.assign(Unit_Create_Date = df['Unit_Create_Date'].dt.date
,Tenancy_Start_Date=df['Tenancy_Start_Date'].dt.date)
.groupby('Unit_ID')['Unit_Create_Date','Tenancy_Start_Date'].min())
final = (m['Tenancy_Start_Date'].sub(m['Unit_Create_Date'])
.dt.days.to_frame('Time_Difference_in_Days').reset_index())
Unit_ID Time_Difference_in_Days
0 A 2
1 B 10
2 C 19
注意:如果DateTime列是dtype
对象,请首先转换为DateTime。
这篇关于大 pandas 因具体情况而产生的日间时差的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持吉威生活!
[英文标题]Time difference in day based on specific condition in pandas
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,如有侵权,请联系QQ:330946442删除。