Python:用于数据帧切片的pandas数据帧条件

时间:2017-05-12 03:02:54

标签: python pandas dataframe

我想更改具有' 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

2 个答案:

答案 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'