我有一个包含几百万行的 Dataframe ,我想每天计算两个日期时间格式的列之间的差异。
有一些堆栈溢出问题可以回答这个问题,即基于时间戳计算差值(see here
基于时间戳进行操作感觉相当快:df["Differnce"] = (df["end_date"] - df["start_date"]).dt.days
但是每天都这样做感觉很慢:df["Differnce"] = (df["end_date"].dt.date - df["start_date"].dt.date).dt.days
我想知道是否有一种简单但更好/更快的方法来达到同样的结果?
示例代码:
import pandas as pd
import numpy as np
data = {'Condition' :["a", "a", "b"],
'start_date': [pd.Timestamp('2022-01-01 23:00:00.000000'), pd.Timestamp('2022-01-01 23:00:00.000000'), pd.Timestamp('2022-01-01 23:00:00.000000')],
'end_date': [pd.Timestamp('2022-01-02 01:00:00.000000'), pd.Timestamp('2022-02-01 23:00:00.000000'), pd.Timestamp('2022-01-02 01:00:00.000000')]}
df = pd.DataFrame(data)
df["Right_Difference"] = np.where((df["Condition"] == "a"), ((df["end_date"].dt.date - df["start_date"].dt.date).dt.days), np.nan)
df["Wrong_Difference"] = np.where((df["Condition"] == "a"), ((df["end_date"] - df["start_date"]).dt.days), np.nan)
1条答案
按热度按时间gr8qqesn1#
使用
Series.dt.to_period
,速度较快的是Series.dt.normalize
或Series.dt.floor
: