我试图了解这样做的最佳方法是什么:
基本上我会有一群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 - 但由于这是一个积极开发的项目,我认为我会先得到一些建议。
答案 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