我正在尝试根据另一个单元格的值更改单元格值(颜色“红色”或“绿色”)。我运行以下命令:

df.loc[0, 'Colour'] = df.loc[0, 'Count'].apply(lambda x: 'Red' if x <= 500
    else 'Green')


我收到以下错误:

AttributeError: 'numpy.float64' object has no attribute 'apply'


任何帮助是极大的赞赏

最佳答案

使用df.loc[0, 'Count']时,您只返回实际上是float位置的项目。 apply是Pandas或numpy系列的方法,因此您需要具有Series类才能使用该方法。因此,最有可能您想要执行类似的操作,但没有测试数据集就很难知道。

df['Colour'] = df['Count'].apply(lambda x: 'Red' if x <=500 else 'Green')


创建测试数据集将向您展示这是如何一起工作的:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,1000,size=(10, 4)), columns=list('ABCD'))
df['Colour'] = df['A'].apply(lambda x: 'Red' if x <=500 else 'Green')
df.head()


哪个返回:

    A   B   C   D   Colour
0   223 360 133 285 Red
1   300 125 642 238 Red
2   118 293 442 382 Red
3   448 357 55  124 Red
4   995 395 658 559 Green


如果要使用.loc访问整个列,则可以使用df.loc[:, 'Count']您可以在此处阅读有关.loc方法的更多信息。

关于python - 'numpy.float64'对象没有属性'apply',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55583902/

10-12 22:12