我正在尝试根据另一个单元格的值更改单元格值(颜色为“红色”或“绿色”)。我运行以下命令:
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'
非常感谢您的帮助
答案 0 :(得分:1)
使用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
方法