我想创建一个新数据框,其中一列包含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]})
谢谢!
答案 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