大Pandas的极性转化

2024-09-30 18:32:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas.DataFrame2048by2048,其中index和{}分别代表y和x坐标。在

我想做一个轴变换,得到极坐标,用代表半径和极角的pandas.DataFrame和{}生成一个新的pandas.DataFrame。 我能想到的唯一方法是逐个访问数据帧值,计算半径和角度,然后在新的数据帧中设置相应的值,但速度非常慢,因为在pandas中元素操作没有那么快。即使我逐行执行操作,它仍然很慢。在

有没有更好的方法不用用C编写自己的CPython扩展?在


Tags: 数据方法元素dataframepandasindex半径代表
1条回答
网友
1楼 · 发布于 2024-09-30 18:32:48

如果您的数据帧是按照我的理解构建的(尽管我认为我错了),这应该不会有问题。建立一个例子:

from __future__ import division
import numpy as np, pandas as pd

index = np.arange(1,2049,dtype=float)
cols  = np.arange(2050,4098,dtype=float)

df = pd.DataFrame(index=index, columns=cols)

# now calculate angle and radius, then set in new dataframe
phi = np.arctan(df.columns/df.index)
r   = np.power( np.power(df.index,2) + np.power(df.columns,2), 0.5 )

df_polar = pd.DataFrame(index=r, columns=phi)

虽然这与你所说的一致,但我想我遗漏了一些东西。如果这不对,你能澄清一下吗?在

相关问题 更多 >