pandas 中的时间增量矩阵(成对)
Matrix of timedeltas in pandas (pairwise)
我有两个pandas系列:
A = pd.Series(['2020-01-01 00:10:00', '2020-01-01 02:20:00'], dtype=pd.datetime64)
B = pd.Series(['2020-01-01 00:00:00', '2020-01-01 02:30:00', '2020-01-01 03:00:00', dtype=pd.datetime64)
获取两个系列 paiwise 中每个日期时间之间的时间增量(以分钟为单位)绝对值的矩阵(pandas DataFrame 或 numpy 二维数组)的最快方法是什么?
结果应该与此类似table:
10 | 140 | 170
140 | 10 | 40
有这方面的功能吗,或者唯一的选择是做一个双 for 循环?
您可以将 Series 转换为 numpy 数组,通过广播进行减法,将输出转换为绝对值,并为最终二维数组除以:
A = pd.Series(['2020-01-01 00:10:00', '2020-01-01 02:20:00'])
B = pd.Series(['2020-01-01 00:00:00', '2020-01-01 02:30:00', '2020-01-01 03:00:00'])
A = pd.to_datetime(A)
B = pd.to_datetime(B)
a = A.to_numpy()[:, None] - B.to_numpy()
a = np.abs(a) / (60 * 10 ** 9)
print (a)
[[ 10 140 170]
[140 10 40]]
我有两个pandas系列:
A = pd.Series(['2020-01-01 00:10:00', '2020-01-01 02:20:00'], dtype=pd.datetime64)
B = pd.Series(['2020-01-01 00:00:00', '2020-01-01 02:30:00', '2020-01-01 03:00:00', dtype=pd.datetime64)
获取两个系列 paiwise 中每个日期时间之间的时间增量(以分钟为单位)绝对值的矩阵(pandas DataFrame 或 numpy 二维数组)的最快方法是什么?
结果应该与此类似table:
10 | 140 | 170
140 | 10 | 40
有这方面的功能吗,或者唯一的选择是做一个双 for 循环?
您可以将 Series 转换为 numpy 数组,通过广播进行减法,将输出转换为绝对值,并为最终二维数组除以:
A = pd.Series(['2020-01-01 00:10:00', '2020-01-01 02:20:00'])
B = pd.Series(['2020-01-01 00:00:00', '2020-01-01 02:30:00', '2020-01-01 03:00:00'])
A = pd.to_datetime(A)
B = pd.to_datetime(B)
a = A.to_numpy()[:, None] - B.to_numpy()
a = np.abs(a) / (60 * 10 ** 9)
print (a)
[[ 10 140 170]
[140 10 40]]