将.rolling应用于具有对象的熊猫数据框

时间:2018-12-03 11:38:59

标签: python pandas

我有两个大熊猫数据框,每列一列。一个具有浮动值作为条目:

a=pandas.DataFrame([[2],[5],[7]])

其中另一个由值的元组组成,例如:

b=pandas.DataFrame([[(1,2)],[(4,5)],[(6,7)]])

我想使用滚动应用对这些元素执行操作。为了使一切变得非常简单,请想象我要执行身份操作。因此,在这种情况下,我只复制元素(实际代码将计算坐标(元组)之间的差异)。

a.rolling(1).apply(lambda x:x)适用于单个值。 但是在元组上执行b.rolling(1).apply(lambda x:x) 出现以下错误:

TypeError: cannot handle this type -> object

这些方法中的任何一个实际上都依赖于存储在数据框中的对象的类型似乎很奇怪。

我在这里做什么错了?

编辑: 我需要将2个连续的元组作为参数传递给另一个函数(以计算距离)。因此,我确实需要访问元组,而不仅仅是访问它们的值。

1 个答案:

答案 0 :(得分:1)

类似的东西会有所帮助-

b[0].apply(pd.Series).rolling(2).apply(lambda x: x[1]-x[0]).apply(tuple, axis=1)

输出

0    (nan, nan)
1    (3.0, 3.0)
2    (2.0, 2.0)
dtype: object