我有一个具有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个日期值,但是您会发现很多值都更少。
欢呼
答案 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将保存所有连续的对差异。在此之后对行进行平均非常简单。