这不起作用:
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
这有效,但速度很慢,并发出警告,然后告诉我查找有关数据帧索引的文档。
答案 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