Pandas 根据所有现有列的值创建新列,第一列除外

Pandas create new columns base on all existing columns' values, except the first column

我有一个这样的数据框:

id  day1    day2    day3    day4    day5                                                                                        
1   24      0       0       0       0
2   35      0       0       0       0
3   9       0       0       0       0
4   20      0       0       0       0
5   4       0       0       0       0
6   3       0       0       1       0
7   3       0       0       0       0
8   8       0       2       0       0

I select 一个子集,其中所有列中的值都为零,第一列除外:

df[pd.np.where(df[['day2', 'day3', 'day4', 'day5']].eq(0).all(1), True, False)]

(附带问题:有没有更简单的方法而不是键入所有列的名称?)

如果上述条件为 True,我希望创建一个新列并分配 0,否则 -1

所以我尝试了:

df['new'] = df.apply(pd.np.where(df[['day2', 'day3', 'day4', 'day5']].eq(0).all(1), 0, -1), axis=1) 

但是出现错误:

TypeError: ("'numpy.ndarray' object is not callable", 'occurred at index 1')

我期待收到此数据帧:

id  day1    day2    day3    day4    day5    new                                                                                       
1   24      0       0       0       0       0
2   35      0       0       0       0       0
3   9       0       0       0       0       0
4   20      0       0       0       0       0
5   4       0       0       0       0       0
6   3       0       0       1       0       -1
7   3       0       0       0       0       0
8   8       0       2       0       0       -1

你有什么想法吗?

考虑到id是索引,

 df['new']=np.where(df.iloc[:,1:].eq(0).all(1),0,-1)