基于数字和字符串条件的Python语句
使用数据帧df:基于数字和字符串条件的Python语句,python,pandas,if-statement,syntax-error,conditional-statements,Python,Pandas,If Statement,Syntax Error,Conditional Statements,使用数据帧df: ID | Category | Price 23 A 101 34 B 50 24 A 55 我想添加一个标志,用于所有a类,价格小于等于100 这是我的代码: df['Flag'][(df['Price'] <=100)&(df['Category']=='A')] = 'X' 当我尝试对标志进行筛选时,会出现以下错误: SettingWithCopyWarning: A value is
ID | Category | Price
23 A 101
34 B 50
24 A 55
我想添加一个标志,用于所有a类,价格小于等于100
这是我的代码:
df['Flag'][(df['Price'] <=100)&(df['Category']=='A')] = 'X'
当我尝试对标志进行筛选时,会出现以下错误:
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
df.loc[df['Flag'] == 'X']
TypeError: invalid type comparison
预期产出:
ID | Category | Price Flag
23 A 101
34 B 50
24 A 55 X
使用loc
df.loc[(df['Price'] <=100)&(df['Category']=='A'), "Flag"] = 'X'
df.loc[(df['Price']您可以使用map()
:
>>df['flag']=((df['Category']='A')和(df['Price']>>df
ID类别价格标志
0 23 A 101
1 34 B 50
2 24 A 55 X
可能重复Im获取此错误现在AttributeError:'str'对象没有属性'loc'。您必须在数据框对象上应用loc
。是否确实要执行df.loc
?
>>> df['flag'] = ((df['Category'] == 'A') & (df['Price'] <= 100)).map({True: 'X', False: ''})
>>> df
ID Category Price flag
0 23 A 101
1 34 B 50
2 24 A 55 X