我对python很新,所以这是一个基本问题。
我有从csv文件导入的数据。每行反映一个人及其数据。两个属性是Sex和Pclass。我想添加一个完全依赖于这两行的新列(预测)。如果两个属性的值都是1,则应该为人的预测数据字段分配1,否则为0。
我如何在一行中完成(让我们说与熊猫一起)?
答案 0 :(得分:1)
IIUC:
df['predictions'] = (df['Sex'] & df['Pclass']).astype(int)
或@JohnGalt提出的建议:
df['predictions'] = df.all(axis=1).astype(int)
演示:
In [68]: df['predictions'] = (df['Sex'] & df['Pclass']).astype(int)
In [69]: df
Out[69]:
Sex Pclass predictions
0 1 1 1
1 1 0 0
2 0 1 0
3 0 0 0
答案 1 :(得分:1)
使用:
np.random.seed(12)
df = pd.DataFrame(np.random.randint(3,size=(10,2)), columns=['Sex','Pclass'])
df['prediction'] = ((df['Sex'] == 1) & (df['Pclass'] == 1)).astype(int)
print (df)
Sex Pclass prediction
0 2 1 0
1 1 2 0
2 0 0 0
3 2 1 0
4 0 1 0
5 1 1 1
6 2 2 0
7 2 0 0
8 1 0 0
9 0 1 0
如果所有值均为1
且0
仅使用this question解决方案:
#only 0, 1 values
df['predictions'] = df.all(axis=1).astype(int)
#if more possible values
df['predictions'] = df.eq(1).all(axis=1).astype(int)
print (df)
Sex Pclass predictions
0 2 1 0
1 1 2 0
2 0 0 0
3 2 1 0
4 0 1 0
5 1 1 1
6 2 2 0
7 2 0 0
8 1 0 0
9 0 1 0