我有几个带有ID,时间戳和值的数据帧。我正在通过合并数据帧来创建最终的数据帧,并且我想根据时间戳列出每个数据帧中的所有值(如果有)。现在,我的(错误的)最终数据帧是这样的:
Date ID ValDf1 ValDf2 ValDf3
104 2017-03-01 04:00:00 13971 5.333333 NaN NaN
105 2017-03-01 06:00:00 13971 5.333333 NaN NaN
106 2017-03-01 06:24:00 13971 5.333333 NaN NaN
107 2017-03-01 07:00:00 13971 4.666667 NaN NaN
108 2017-03-01 07:59:00 13971 4.000000 NaN NaN
109 2017-03-01 08:00:00 13971 4.000000 NaN NaN
110 2017-03-01 10:30:00 13971 3.333333 NaN NaN
111 2017-03-01 12:00:00 13971 2.666667 NaN NaN
112 2017-02-25 08:00:00 13971 NaN NaN 0.000000
113 2017-02-25 12:00:00 13971 NaN NaN 5.000000
114 2017-02-25 14:00:00 13971 NaN NaN 5.000000
115 2017-02-25 16:03:00 13971 NaN NaN 5.000000
116 2017-02-25 17:00:00 13971 NaN NaN 5.000000
117 2017-02-25 18:43:00 13971 NaN NaN 6.000000
现在,我想根据日期将它们按唯一的列排序:例如,像这样:
Date ID ValDf1 ValDf2 ValDf3
104 2017-02-25 04:00:00 13971 5.333333 NaN 0.000000
105 2017-02-25 06:00:00 13971 5.333333 NaN 5.000000
106 2017-02-25 06:24:00 13971 5.333333 NaN 5.000000
107 2017-03-01 07:00:00 13971 4.666667 NaN NaN
108 2017-03-01 07:59:00 13971 4.000000 NaN NaN
109 2017-03-01 08:00:00 13971 4.000000 NaN NaN
110 2017-03-01 10:30:00 13971 3.333333 NaN NaN
111 2017-03-01 12:00:00 13971 2.666667 NaN NaN
有没有办法做到这一点?我尝试使用concat进行合并,但结果始终是我所展示的结果。我需要使用重采样功能对日期重新采样吗?
非常感谢您
我尝试对此最终数据帧进行编码是:
finalDf = pd.DataFrame()
frame = [df1, df2, df3]
finalDf = pd.concat(frame)
finalDf = visScore.groupby('ID')['Date']
但是结果就是您之前发现的
答案 0 :(得分:0)
这吗?
df.groupby(['Date', 'ID']).sum()
ValDf1 ValDf2 ValDf3
Date ID
04:00:00 13971 5.333333 0.0 0.0
06:00:00 13971 5.333333 0.0 0.0
06:24:00 13971 5.333333 0.0 0.0
07:00:00 13971 4.666667 0.0 0.0
07:59:00 13971 4.000000 0.0 0.0
08:00:00 13971 4.000000 0.0 0.0
10:30:00 13971 3.333333 0.0 0.0
12:00:00 13971 2.666667 0.0 5.0
14:00:00 13971 0.000000 0.0 5.0
16:03:00 13971 0.000000 0.0 5.0
17:00:00 13971 0.000000 0.0 5.0
18:43:00 13971 0.000000 0.0 6.0
具有多个数据框:
pd.concat([df, df]).groupby(['Date', 'ID']).sum()
ValDf1 ValDf2 ValDf3
Date ID
04:00:00 13971 10.666666 0.0 0.0
06:00:00 13971 10.666666 0.0 0.0
06:24:00 13971 10.666666 0.0 0.0
07:00:00 13971 9.333334 0.0 0.0
07:59:00 13971 8.000000 0.0 0.0
08:00:00 13971 8.000000 0.0 0.0
10:30:00 13971 6.666666 0.0 0.0
12:00:00 13971 5.333334 0.0 10.0
14:00:00 13971 0.000000 0.0 10.0
16:03:00 13971 0.000000 0.0 10.0
17:00:00 13971 0.000000 0.0 10.0
18:43:00 13971 0.000000 0.0 12.0