【发布时间】:2018-11-06 23:10:06
【问题描述】:
我想根据其他两列的条件在 pandas 中创建一列。我正在尝试使用带有 if else 条件的 for 循环,但在检查字符串值时出错。
我的数据框:
df=pd.DataFrame({"Area:['USA','India','China','UK','France','Germany','USA','USA','India','Germany'],
"Sales":[2,3,7,1,4,3,5,6,9,10]})
我想根据条件创建一列 RATING:
如果国家在亚洲并且销售额 >2,那么 1
如果国家在北美并且销售额 >3,则为 1
如果国家以欧元为单位且销售额 >=4,则为 1 其他 0
我正在使用一个函数:
ASIA=['India','China']
NA= ['USA']
EUR=['UK','France','Germany']
def label_race(row):
if row['Area'].isin(ASIA) & row['Sales'] >2 :
return 1
if row['Area'].isin(NA) & row['Sales'] >3 :
return 1
if row['Area'].isin(EUR) & row['Sales'] >=4 :
return 1
return 0
df['Rating']=df.apply(lambda row: label_race(row),axis=1)
抛出以下错误:
AttributeError: ("'str' object has no attribute 'isin'", 'occurred at index 0')
请告诉我我在函数中做错了什么或任何其他更简单的方法。
【问题讨论】:
标签: string pandas for-loop if-statement