天天看點

多個list合成一個dataframe

#定義空的list存放每次循環的表
ls=[]
#對不同時間做循環
for t in testdata['Time'].drop_duplicates():
    #給定時間條件
    tmp = testdata[testdata['Time']==t]
    #提取這一時刻出現的所有ID([[]]才會生成表格)
    tmp1=tmp[['ID']]
    #設定臨時列
    tmp1['tmp']=1
    #做表連接配接,生成兩兩之間的對應表
    tmp1=pd.merge(tmp1,tmp1,on = ['tmp'])
    #隻保留這個表的一半
    tmp1 = tmp1[tmp1['ID_x']>tmp1['ID_y']]
    #把其他資訊連接配接到對應表上
    tmp.columns = ['ID_x','Time_x','lon_x','lat_x']
    tmp1 = pd.merge(tmp1,tmp,on='ID_x')
    tmp.columns = ['ID_y','Time_y','lon_y','lat_y']
    tmp1 = pd.merge(tmp1,tmp,on='ID_y')
    #删除多餘的列,重命名列
    tmp1 = tmp1.drop(['tmp','Time_y'],axis = 1).rename(columns={'Time_x':'Time'})
    ls.append(tmp1)
#最後合并表
pd.concat(ls)   #多個list合成一個dataframe
ls