匹配熊猫中的日期并在新列中添加重复项

Match dates in panda and add duplicate in new column

我正在寻找一种优雅的方式来匹配 panda DataFrame 中的日期时间。 原始数据如下所示:

point_id      datetime        value1  value2        
   1      2017-05-2017 00:00    1      1.1
   2      2017-05-2017 00:00    2      2.2
   3      2017-05-2017 00:00    3      3.3
   2      2017-05-2017 01:00    4      4.4

结果应该是这样的:

datetime            value  value_cal  value2  value_calc2   value3    value_calc3
2017-05-2017 00:00    1      1.1        2        2.2          3          3.3
2017-05-2017 01:00   Nan     Nan        4        4.4         Nan         NaN

最后,每个日期时间和丢失的数据点都应该有一行。

In [180]: x = (df.drop('point_id',1)
     ...:        .rename(columns={'value1':'value','value2':'value_cal'})
     ...:        .assign(n=df.groupby('datetime')['value1'].cumcount()+1)
     ...:        .pivot_table(index='datetime', columns='n', values=['value','value_cal'])
     ...:        .sort_index(axis=1, level=1)
     ...: )
     ...:

In [181]: x
Out[181]:
                   value value_cal value value_cal value value_cal
n                      1         1     2         2     3         3
datetime
2017-05-2017 00:00   1.0       1.1   2.0       2.2   3.0       3.3
2017-05-2017 01:00   4.0       4.4   NaN       NaN   NaN       NaN

现在我们可以 "fix" 列名称

In [182]: x.columns = ['{0[0]}{0[1]}'.format(c) for c in x.columns]

In [183]: x
Out[183]:
                    value1  value_cal1  value2  value_cal2  value3  value_cal3
datetime
2017-05-2017 00:00     1.0         1.1     2.0         2.2     3.0         3.3
2017-05-2017 01:00     4.0         4.4     NaN         NaN     NaN         NaN