Python 基于多列条件递增数据帧中的单元格值
我正在尝试根据Python 基于多列条件递增数据帧中的单元格值,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试根据列1和列2中的检查来增加列3中的整数值 | column_1 | column_2 | column_3 0 | a | x | 1 1 | b | y | 1 2 | c | z | 1 如果column_1=a和column_2=x,我想将column_3中的值增加1 我尝试了以下方法,但不起作用- df = pd.DataFrame({ "col
列1
和列2
中的检查来增加列3中的整数值
| column_1 | column_2 | column_3
0 | a | x | 1
1 | b | y | 1
2 | c | z | 1
如果column_1=a
和column_2=x
,我想将column_3
中的值增加1
我尝试了以下方法,但不起作用-
df = pd.DataFrame({
"column_1": ['a', 'b', 'c'],
"column_2": ['x', 'y', 'z'],
"column_3": [1,1,1]
})
df[(df['column_1']=='a') & (df['column_2']=='x')]['column_3'] += 1
运行上述代码后,检查df
输出将给出相同的数据帧
在Jupyter显示警告后,我使用了.loc
,但它仍然不起作用
df.loc[df.column_1.isin(['a']) & df.column_2.isin(['x'])]['column_3'].iat[0] += 1
我们究竟如何做到这一点?使用是正确的方法,但也有必要删除][
和iat
:
df.loc[(df['column_1']=='a') & (df['column_2']=='x'), 'column_3'] += 1
print (df)
column_1 column_2 column_3
0 a x 2
1 b y 1
2 c z 1
另一个解决方案包括:
太好了。!!想知道是否还有其他方法可以实现这一点?或者这是解决我特定问题的唯一方法?@AmitPathak-补充了另一个想法。
df['column_3'] += np.where((df['column_1']=='a') & (df['column_2']=='x'), 1, 0)
print (df)
column_1 column_2 column_3
0 a x 2
1 b y 1
2 c z 1