同步数据集 - 多个用户,多个时间戳

时间:2012-12-29 07:42:36

标签: android ios dataset timestamp pandas

我试图了解这样做的最佳方法是什么:

基本上我会有一群Android / iOS用户会在他们的手机上记录传感器数据,除非每个用户都有自己的时间戳,具体取决于人们何时启动应用程序等。所以说我有两个用户:

User 1: (5,45), (6,34), (8,32)
User 2: (5,35), (7,32), (9,32)

格式为(时间t和某个任意值)。

同步两个数据集的最佳方法是什么?我是否必须编写一个算法,然后返回并在用户2上说,插入以下条目(6,35)。所以最终新数据看起来像:

User 1: (5,45), (6,34), (7,34), (8,32), (9,32)
User 2: (5,35), (6,35), (7,32), (8,32), (9,32)

这可能是非常数据密集的,因为我希望有大约300个用户,每个用户将拥有大约36,000个数据条目。任何建议都将受到赞赏 - 我也可以在应用程序方面做一些可以帮助的建议。

我相信当我拥有所有数据时,我将不得不做一些事情like this - 但由于这是一个积极开发的项目,我认为我会先得到一些建议。

1 个答案:

答案 0 :(得分:2)

您可以从每个用户的数据创建DataFrame。然后将它们全部存储在Panel中。 Pandas会根据时间戳将它们排成一行,您可以使用前向填充方法ffill来传播值:

In [62]: df1 = DataFrame([45,34,32], index=[5,6,8], columns=['value'])

In [63]: df2 = DataFrame([35,32,32], index=[5,7,9], columns=['value'])

In [64]: p = Panel({'user1': df1, 'user2': df2})

In [75]: p.ffill().to_frame().unstack()
Out[75]:
       user1  user2
minor  value  value
major
5         45     35
6         34     35
7         34     32
8         32     32
9         32     32

或者,你可以只使用Series和DataFrames做同样的事情。我想这取决于你想用它做什么:

In [78]: s1 = Series([45,34,32], index=[5,6,8])

In [79]: s2 = Series([35,32,32], index=[5,7,9])

In [80]: df = DataFrame([s1,s2])

In [81]: df
Out[81]:
    5   6   7   8   9
0  45  34 NaN  32 NaN
1  35 NaN  32 NaN  32

In [82]: df = DataFrame([s1,s2]).T

In [83]: df
Out[83]:
    0   1
5  45  35
6  34 NaN
7 NaN  32
8  32 NaN
9 NaN  32

In [84]: df.ffill()
Out[84]:
    0   1
5  45  35
6  34  35
7  34  32
8  32  32
9  32  32