我有一个这样的数据框:
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
您有什么想法吗?
答案 0 :(得分:3)
考虑id
为索引,
df['new']=np.where(df.iloc[:,1:].eq(0).all(1),0,-1)