【发布时间】:2019-07-26 00:01:29
【问题描述】:
美国的数据库以.csv 格式接收来自世界各地的某一天信息。有 15 天的数据,来自 26 个地方。总共 15x26 = 390 个数据帧。此外,26 个地方有一个共同的参考数据框。现在,我想将 390 + 1 个参考数据帧合并为一个。我在这里给出了我的问题的一个示例:
plA_d1df = ### place A day1 dataframe
Adata
2019-01-10 07:35:22 10
2019-01-10 08:15:17 20
plB_d1df =
Bdata
2019-01-10 07:38:45 30
2019-01-10 08:18:57 40
ptA_d2df =
Adata
2019-01-21 07:35:42 50
2019-01-21 08:15:17 60
ptB_d2df =
Bdata
2019-01-21 07:39:04 70
2019-01-21 08:19:22 80
reference =
ref
2019-01-10 07:35:00 500
2019-01-10 07:38:00 530
2019-01-10 08:15:00 560
2019-01-10 08:18:00 590
2019-01-21 07:35:00 610
2019-01-21 07:39:00 640
2019-01-21 08:15:00 670
2019-01-21 08:19:00 700
以上所有地点和参考的数据应结合到地点-A的时间戳,如下所示:
combdf =
datetime ref0 Adata ref1 Bdata
2019-01-10 07:35:22 500 10 530 30
2019-01-10 08:15:17 560 20 590 40
2019-01-21 07:35:42 610 50 640 70
2019-01-21 08:15:17 670 60 700 80
参考解决的answer后我实现了以下代码:
biglist = [[plA_d1df,plB_d1df],[plA_d2df,plB_d2df]] ## dataframes are in a nested list of list
l = []
s1 = []
### refdf = reference dataframe
for i in range(0,len(biglist),1):
for j in range(0,len(biglist[i]),1):
s1=refdf.reindex(biglist[i][j].index,method='nearest')
if j==0:
l.append(s1.join(biglist[i][j]))
else:
l.append(s1.join(biglist3[i][j]).reindex(l[0].index,method='nearest'))
combdf = pd.concat(l,1)
以上代码运行成功。组合数据帧combdf 的时间戳与位置 A 匹配,这正是我想要的。但是同一个地方的列没有合并。相反,每天创建单独的列。所以我最终有 8 列,而不是 4 列,大部分都填满了nan。
我现在的输出是:
combdf =
datetime ref0 Adata ref1 Bdata ref0 Adata ref1 Bdata
2019-01-10 07:35:22 500 10 530 30 nan .. nan
2019-01-10 08:15:17 560 20 590 40 nan .. nan
2019-01-21 07:35:42 nan .. nan 610 50 640 70
2019-01-21 08:15:17 nan .. nan 670 60 700 80
我必须进行哪些更正才能将列合并到相同的列中。
【问题讨论】: