我是一个Python新手,正在做一个项目,我有一个数据集,需要根据我制作的几个函数中定义的特定条件来操作列中的一些数字。
给定Pandas DataFrame中的一列浮点数,该列具有如下列表,并定义了对数据执行此算法的函数:
df = {'location x': [107.0, 254.0, 52.0, 640.0, 882.0],
'location y': [252.0, 56.0, 250.0, 86.0, 318.0]}
def change_y(num):
if num > 470:
num = 470 - [(num) - 470]
return num
else:
pass
def change_x(num):
if num < 250:
num = (250 - num) + 250
return num
elif num > 250:
num = 250 - (num - 250)
return num
else:
pass
使用:
for index in df.index:
heatmap_df['location y'][index].apply(change_y)
heatmap_df['location x'][index].apply(change_x)
产生以下错误:
22 for index in df.index:
---> 23 df['location y'][index].apply(change_y)
24 df['location x'][index].apply(change_x)
AttributeError: 'numpy.float64' object has no attribute 'apply'
正在寻找关于我是否使用了. apply()错误或是否有替代方法的帮助,谢谢!
2条答案
按热度按时间z9smfwbn1#
要使用
.apply()
,不需要循环,而是可以这样做:我还将函数
change_y
从num = 470 - [(num) - 470]
更改为num = 470 - (num-470)
,以避免潜在的错误。inb24sb22#
num = (250 - num) + 250
和num = 250 - (num - 250)
是相同的:num = 500 - num
适用于所有条件。您可以只使用矢量代码,这里不需要
apply
,而且效率很低:输出: