python - 检查列是否在列表中,如果不是则删除并将值添加到新列
问题描述
我有一个这样的数据库:
df = pd.DataFrame( {
"A" : [0,0,1,1,0,1] ,
"B" : [1,0,0,1,1,0],
"C" : [0,0,0,1,1,0],
"D" : [1,1,0,0,0,1]} )
看起来像这样:
A B C D
0 0 1 0 1
1 0 0 0 1
2 1 0 0 0
3 1 1 1 0
4 0 1 1 0
5 1 0 0 1
我有一个我希望保留的列列表allowed_columns = ["A","B"]
。这意味着我们摆脱了C
and D
。但是,在删除列时,如果有值 1,我想在新列中注明lost
。这就是我想要实现的目标:
A B lost
0 0 1 1
1 0 0 1
2 1 0 0
3 1 1 1
4 0 1 1
5 1 0 1
为了解决问题,我们可以假设C
并且D
不能同时具有值 1。我怎样才能做到这一点?
解决方案
子集到允许的列,然后取你删除的所有内容的最大值df.columns.difference
df = (df[allowed_columns]
.assign(lost=df[df.columns.difference(allowed_columns)].max(1)))
推荐阅读
- react-native - 如何像标签一样创建从一个组件到下一个组件的超链接?
- azure-devops - 克隆存储库后 Azure DevOps 强制 core.hooksPath
- html - 我的表没有从我的外部 css 继承其样式
- python - 如何从 sr 函数中获取 scapy IP 地址列表结果到变量中
- reactjs - 使用带有 React 路由器的渲染道具时在组件中获取未定义的道具
- android - android studio3.6中的Gradle同步失败错误
- sql - 如何更新表中所有行之间的日期时间差?
- python-3.x - Python枚举设置为函数中的参数
- dart - 如何将字符串解析为 DateTime?
- tensorflow - 级联向量的 Keras L2 归一化