找出熊猫中许多日期时间列之间的差异

时间:2018-07-26 15:18:51

标签: python pandas

我有一个具有282列和14000行的数据框。它看起来如下:

                                    0           1               ...     282
uref_fixed      
0006d730f5aa8492a59150e35bca5cc6    3/26/2018   7/3/2018        ...
00076311c47c44c33ffb834b1cebf5db    5/13/2018   5/13/2018       ...
0009ba8a69924902a9692c5f3aacea7f    7/13/2018   None            ...
000dccb863b913226bca8ca636c9ddce    11/5/2017   11/10/2017      ... 

我试图在索引0处结束一列,该列针对每一行显示每一行中每个连续日期值之间的差异的平均值(即,第2列和第3列中的差异日期,然后是差异3和4,然后是差4和5等,然后是所有这些的平均值)

请注意,连续最多可以有282个日期值,但是您会发现很多值都更少。

欢呼

1 个答案:

答案 0 :(得分:0)

from datetime import datetime as dt
#df is your dataframe, df2 is a new one you have to initialize as empty
def diffdate(df, col1, col2):
    if df[col1]==None or df[col2]==None:
        return None
    date1 = [int(i) for i in df[col1].split('/')]
    date2 = [int(i) for i in df[col2].split('/')]
    return (dt(date2[2],date2[0],date2[1]) - dt(date1[2],date1[0],date1[1])).days
for i in range(len(df.columns)-1):
    df2[i] = df.apply(lambda x: diffdate(df, i, i+1),axis = 1)

df2将保存所有连续的对差异。在此之后对行进行平均非常简单。