Python 基于特定列的总和创建新列
我对Python非常陌生,尝试创建一列来指示少数列的总和是否大于0 例如,我有一个类似于下面的df: 身份证件 量 花费 频率 日期 a1 0 0 0 10/02 a2 0 10 0 05/12 a2 0 0 0 03/12Python 基于特定列的总和创建新列,python,pandas,dataframe,rows,calculated-columns,Python,Pandas,Dataframe,Rows,Calculated Columns,我对Python非常陌生,尝试创建一列来指示少数列的总和是否大于0 例如,我有一个类似于下面的df: 身份证件 量 花费 频率 日期 a1 0 0 0 10/02 a2 0 10 0 05/12 a2 0 0 0 03/12 首先创建一个布尔掩码: mask=(df[['quantity','spent','freq']]==0).all(1) 最后: 使用loc存取器: df.loc[mask,'not_zero']=0 df.loc[~mask,'not_zero']=1 或 使用np.
首先创建一个布尔掩码:
mask=(df[['quantity','spent','freq']]==0).all(1)
最后:
使用loc
存取器:
df.loc[mask,'not_zero']=0
df.loc[~mask,'not_zero']=1
或
使用np.where()
方法:
df['not_zero'] = np.where(mask, 0, 1)
尝试轴=1,然后:
或与:
df
:
id花费频率日期的数量不为零
0 a1 0 0 10/02 0
1 a2 0 10 0 05/12 1
2 a2 0 0 03/12 0
您可以考虑<代码> DF[ NOTZON0 ] = NP。其中(掩码,0, 1)两个<代码> LOC 赋值。
df['not_zero'] = df[['quantity', 'spent', 'freq']].any(axis=1).astype(int)
df['not_zero'] = np.where(df[['quantity', 'spent', 'freq']].any(axis=1), 1, 0)