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

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个连续的元组作为参数传递给另一个函数(以计算距离)。因此,我确实需要访问元组,而不仅仅是访问它们的值。

最佳答案

这样的事情会有所帮助-

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

关于python - 将.rolling应用于具有对象的 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53593081/

10-12 22:51