【发布时间】:2018-10-28 16:16:27
【问题描述】:
我有一个数据框,其中三列是数据的坐标(“H_x”、“H_y”和“H_z”)。我想计算数据的半径向量并将其作为新列添加到我的数据框中。但是我对熊猫应用功能有一些问题。 我的代码是:
def radvec(x, y, z):
rv=np.sqrt(x**2+y**2+z**2)
return rv
halo_field['rh_field']=halo_field.apply(lambda row: radvec(row['H_x'], row['H_y'], row['H_z']), axis=1)
我得到的错误是:
group_sh.py:78: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-
docs/stable/indexing.html#indexing-view-versus-copy
halo_field['rh_field']=halo_field.apply(lambda row: radvec(row['H_x'], row['H_y'], row['H_z']), axis=1)
我得到了我想要的列,但我仍然对这个错误消息感到困惑。 我知道这里有类似的问题,但我找不到如何解决我的问题。我对python相当陌生。你能帮忙吗?
编辑: halo_field 是另一个数据帧的一部分:
halo_field = halo_res[halo_res.N_subs==1]
【问题讨论】:
-
您是如何在代码中定义
halo_fieldearlier 的?很可能它是另一个数据帧的 slice,这就是您的错误的原因。 -
是的,它是另一个数据帧的切片:halo_field=halo_res[halo_res.N_subs==1]