熊猫根据第一列以外的所有现有列的值创建新列

时间:2018-07-23 04:28:04

标签: python pandas conditional

我有一个这样的数据框:

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

我选择一个子集,其中除第一列外,所有列的值均为零:

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

(旁问:是否有比输入所有列名称更简单的方法?)

如果以上条件为0,则我想创建一个新列并分配True,否则为-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

您有什么想法吗?

1 个答案:

答案 0 :(得分:3)

考虑id为索引,

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