如何在一行中添加新列并插入(计算)数据?

时间:2017-09-10 16:43:25

标签: python pandas

我对python很新,所以这是一个基本问题。

我有从csv文件导入的数据。每行反映一个人及其数据。两个属性是Sex和Pclass。我想添加一个完全依赖于这两行的新列(预测)。如果两个属性的值都是1,则应该为人的预测数据字段分配1,否则为0。

我如何在一行中完成(让我们说与熊猫一起)?

2 个答案:

答案 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

如果所有值均为10仅使用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