根据现有数据框的条件创建一个新的数据框

时间:2019-04-10 14:04:31

标签: python pandas if-statement

我想创建一个新数据框,其中一列包含0或1,具体取决于现有数据框的条件。

在df(现有)数据框中,我想检查a,b和c列中的值是否同时包含零。如果是这样,请创建一个新数据框,其中的一列如果满足条件,则返回零。否则返回1。

现有数据框示例:

df = pd.DataFrame({"a":[0,1,0,0],"b":[0,None,0,None],"c":[0,8,0,10],"new_col":[5,5,5,5]})
mylist = ['a','b','c']

if any((df[mylist] == 0).all(1).values):
    print('all zeros')
else:
    print('contains nonzero')

我无法弄清楚应该用什么代替打印语句以获得理想的结果。

所需数据框:

df_new = pd.DataFrame({'col':[0,1,0,1]})

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您需要更改支票的条件不等于z = torch.linspace(-1, 1, steps=5, requires_grad=True) y = torch.sum(torch.pow(z,2)) y.backward(torch.tensor(1.)) z.grad

mBuilder.setPositiveButton("Start activity", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
         //here you create your intent aand startActivity
    }
});

mBuilder.setNegativeButton("Cancel", null);

如果需要新的DataFrame:

any
  

它必须使用“ if”语句

在大熊猫中使用df['out'] = (df[mylist] != 0).any(1).astype(int) print (df) a b c new_col out 0 0 0.0 0 5 0 1 1 NaN 8 5 1 2 0 0.0 0 5 0 3 0 NaN 10 5 1 -numpy.where中的df1 = (df[mylist] != 0).any(1).astype(int).to_frame('col') print (df1) col 0 0 1 1 2 0 3 1 函数:

if-else

也可以使用numpy解决方案,但不要使用它,因为它很慢:

df['out'] = np.where((df[mylist] != 0).any(1), 1, 0)
print (df)
   a    b   c  new_col  out
0  0  0.0   0        5    0
1  1  NaN   8        5    1
2  0  0.0   0        5    0
3  0  NaN  10        5    1
相关问题