python - Pandas 基于所有现有列的值创建新列,第一列除外
问题描述
我有一个这样的数据框:
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
你有什么想法?
解决方案
考虑id
是指数,
df['new']=np.where(df.iloc[:,1:].eq(0).all(1),0,-1)
推荐阅读
- php - 致命错误:未捕获的 PDOException:SQLSTATE [42000]
- regex - 摩纳哥编辑器如何突出显示函数参数名称
- arrays - MongoDB 图表 $multiply
- html - 为什么我的 :focus 不起作用?我已将 CSS 正确链接到 HTML,但输入的样式也未按照样式表设置
- python - 如何制作一个简单的网络爬虫并将信息导出到电子表格中?
- ios - iOS 通用链接:点击应用程序内的通用链接会将我重定向到 safari,而不是在应用程序中继续
- algorithm - 查找给定矩阵的元素
- python - yfinance gui 字符串未定义?
- .net - 使用 docker 托管 .net 核心后无法获取客户端 IPAddress
- python - 如何在字典中返回None,其中字典中不存在id?