通过过滤其他人来创建新列

时间:2020-10-08 23:38:31

标签: python pandas

我需要根据新的其他列将值1或0分配给新列。 我大约有30列带有二进制值(1或0)的列,还有其他具有数字,连续值(例如200)的变量。我想避免使用多个OR编写逻辑条件,因此我想知道是否存在一种简便快捷的方法。 例如,创建一个具有列名的列表,如果该对应行的所有列中的值至少为1,则为新列分配1。

示例:

{
  "input": {
    "urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6YzQ4ZDUxNDNhMDRiNDAxNmI3ODYxY2NlMzQ2ZDkyNjdfZmFjaWxpdHlfOTUvZWIyYzMzNDgtNDAxYS00ZjQ3LTgwM2EtMjM1OGYwYmI0YjY2LnJ2dA"
  },
  "output": {
    "destination": {
      "region": "us"
    },
    "formats": [
      {
        "type": "svf",
        "views": [
          "3d"
        ],
        "advanced": {
          "generateMasterViews": true
        }
      }
    ]
  }
}

预期:

a1 b1 d4    ....
1   0  1
0   0  1
0   0  0
...

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

这是一个简单的解决方案:

df = pd.DataFrame({'a1':[1,0,0,1], 'b1':[0,0,0,1], 'd4':[1,1,0,0], 'num':[12,-2,0,3]})
df['New'] = df[['a1','b1','d4']].any(1).astype('int')
df

    a1  b1  d4  num New
0   1   0   1   12  1
1   0   0   1   -2  1
2   0   0   0   0   0
3   1   1   0   3   1