'numpy.float64'对象没有属性'apply'

时间:2019-04-09 01:32:39

标签: python python-3.x

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

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'

非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

使用df.loc[0, 'Count']时,您只会返回实际上是该位置的项目floatapply是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方法