pandas 根據兩個初始時間差生成對應行數

2022-04-29 09:48:06 字數 1886 閱讀 2188

比如說,初始日期分別是20200101,20201201,我要生成如下

**如下:

list1=  #

用於儲存id

list2= #

用於儲存date

for i in

range(len(tmp)):

#生成時間序列

obs_list = [str(i.date()) for i in (pd.date_range(start =tmp.iloc[i].opendate,

end=tmp.iloc[i].enddate,

freq = '

m')).tolist()]

#date

l=len(obs_list) #

coll=[tmp.iloc[i].ref_id]*l

from itertools import chain #

用於展平裡面的

dict1=pd.dataframe()

dict1

注意,上面的tmp其實是乙個表,裡面有三個字段,分別是ref_id,opendate,enddate我們重新修改了一下,寫成函式

def

date_to_row(df):

'''df 有欄位id,opendate,enddate三個字段組成

這次是按照月份差生成行數,還可以按照天數差生成

'''df_out_1=pd.dataframe(columns=['

id','

opendate

','enddate'])

for i in

range(len(df)):

#生成時間序列

df_out =pd.dataframe()

date_list = [str(i.date()) for i in (pd.date_range(start =df.iloc[i].opendate,

end=df.iloc[i].enddate,

freq = 'm'

)).tolist()]

len_date =len(date_list)

df_out['id

'] = [df.iloc[i].id]*len_date

df_out[

'opendate

'] = [df.iloc[i].opendate]*len_date

df_out[

'enddate

'] = [df.iloc[i].enddate]*len_date

df_out[

'row_date

'] =date_list

return df_out_1

驗證結果如下;

最後可以使用表連線或者合併的功能

寫這些主要用於歷史資料回溯,比如說計算vintage 等

c 兩個時間差

datetime t1 datetime.parse 2007 01 01 datetime t2 datetime.parse 2006 01 01 system.timespan t3 t1 t2 兩個時間相減 預設得到的是 兩個時間之間的天數 得到 365.00 00 00 double ge...

Java計算兩個時間差

計算兩個日期的時間差 param formattime1 param formattime2 return public static string gettimedifference timestamp formattime1,timestamp formattime2 catch parseex...

Java獲取兩個時間差

如果是string型別,需要轉成date型別 如 string starttime 2018 01 01 10 30 30 string endtime 2018 01 08 11 45 45 看自己的時間格式選擇對應的轉換物件 dateformat sdf new dateformat yyyy ...