我想更改具有' ABC'的pandas dataframe列的内容。如果条件满足,仅在列中。 我尝试下面的代码,但它返回此错误
A value is trying to be set on a copy of a slice from a DataFrame.Try using .loc[row_indexer,col_indexer] = value instead
print df
Item Price Quantity
0 ABC 10 30
1 ABB 20 50
2 ABC 37 89
3 ABG 5 78
con1 = df['Price']>10
con2 = df['Quantity']>20
df[df['Item']=='ABC'].loc[con1 & con2,'Item'] = 'ABCD'
Output that I want
Item Price Quantity
0 ABC 10 30
1 ABB 20 50
2 ABCD 37 89
3 ABG 5 78
答案 0 :(得分:5)
警告是由链式索引引起的(首先制作切片然后在该切片上使用.loc
)。 df['Item']=='ABC'
只是您可以在.loc
中使用的另一个条件:
df.loc[con1 & con2 & (df['Item']=='ABC'), 'Item'] = 'ABCD'
答案 1 :(得分:1)
con1 = df['Price']>10
con2 = df['Quantity']>20
con3 = df['Item'] == 'ABC'
df['Item'][(con1) & (con2) & (con3)] = 'ABCD'