Python数据框:将负极角改为正

时间:2018-05-21 19:51:24

标签: python-3.x pandas polar-coordinates

这不起作用:

df[df['angle'] < 0]] += 360

我该如何解决这个问题?我需要有一个已经存在的pandas数据帧,负角度和正角度更新为正极坐标角度(0到360度)。

有:

[-135, -90, -45, 180, 135, 90, 45, 0, etc... ] # polar 'angles' in degrees (with negatives)

想要:

[315, 270, 225, 180, 135, 90, 45, 0, etc... ] # polar 'angles' in degrees (positive only)

//编辑(回复)://///////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////

这一行df[df['angle'] < 0]] += 360给出了类型错误:
&#34; TypeError:使用块值无法操作360必须是str,而不是float。&#34;

数据帧的信息&#39;角度&#39;是:
&#34;名称:角度,dtype:in64,

原始的蛮力&#39;我使用的解决方案是:

for i in range(len(df['angle'])):
    if df['angle'][i] < 0:
        df['angle'][i] += 360

这有效,但速度很慢,并发出警告,然后告诉我查找有关数据帧索引的文档。

1 个答案:

答案 0 :(得分:1)

使用

df['angle'] %= 360 

将所有角度转换为范围[0-360),无论符号如何。对于负度或绝对值超过360

的角度,这将正常工作

的示例:

-270 % 360 == 90
-675 % 360 == 45
675 % 360 == 315

如果你只想处理负度(即允许450而不是将其转换为90):

df.iloc[df.angle < 360, 'angle'] %= 360