如果其他列值不符合条件,则熊猫会更改列的值

时间:2019-05-25 22:07:30

标签: python python-3.x pandas

我有以下数据框。我想检查“ mental_illness”,“ feeling”和“ flavor”列的每一行的值。如果每行这三列的所有值都小于0.5,我想将“未分类”列的对应值更改为1.0。

      sent_no    pos      unclassified  mental_illness  feeling  flavor  
0        0      word_1           0.0            0.75     0.30    0.28   
1        1      word_2           0.0            0.17     0.72    0.16   
2        2      word_3           0.0            0.19     0.38    0.16   
3        3      word_4           0.0            0.39     0.20    0.14   
4        4      word_5           0.0            0.72     0.30    0.14  

预期结果:

      sent_no    pos      unclassified  mental_illness  feeling  flavor  
0        0      word_1           0.0            0.75     0.30    0.28   
1        1      word_2           0.0            0.17     0.72    0.16   
2        2      word_3           1.0            0.19     0.38    0.16   
3        3      word_4           1.0            0.39     0.20    0.14   
4        4      word_5           0.0            0.72     0.30    0.14  

我该怎么做?

3 个答案:

答案 0 :(得分:0)

这项工作可以吗?

mask1 = df["mental_illness"] < 0.5
mask2 = df["feeling"] < 0.5
mask3 = df["flavor"] < 0.5

df.loc[mask1 & mask2 & mask3, 'unclassified'] = 1

答案 1 :(得分:0)

axis=1上使用.le.all

m = df[['mental_illness', 'feeling', 'flavor']].le(0.5).all(axis=1)

df['unclassified'] = m.astype(int)

   sent_no     pos  unclassified  mental_illness  feeling  flavor
0        0  word_1             0            0.75     0.30    0.28
1        1  word_2             0            0.17     0.72    0.16
2        2  word_3             1            0.19     0.38    0.16
3        3  word_4             1            0.39     0.20    0.14
4        4  word_5             0            0.72     0.30    0.14

答案 2 :(得分:0)

这是我的解决方法:

data.unclassified = data[['mental_illness', 'feeling', 'flavor']].apply(lambda x: x.le(0.5)).apply(lambda x: 1 if sum(x) == 3 else 0, axis = 1)

输出

   sent_no  pos     unclassified    mental_illness  feeling     flavor
0        0     Word_1       0        0.75            0.30       0.28
1        1     Word_2       0        0.17            0.72       0.16
2        2     Word_3       1        0.19            0.38       0.16
3        3     Word_4       1        0.39            0.20       0.14
4        4     Word_5       0        0.72            0.30       0.14