熊猫系列的真相值含糊

时间:2019-06-24 17:12:48

标签: pandas numpy

我试图根据另一列值是否在列表中来设置熊猫数据框中的一列。 我尝试:

df['IND']=pd.Series(np.where(df['VALUE'] == 1 or df['VALUE'] == 4, 1,0))   

但是我得到:系列的真值是模棱两可的。 实现该功能的最佳方法是什么:

If VALUE is in (1,4), then IND=1, else IND=0        

1 个答案:

答案 0 :(得分:1)

您需要分配else值,然后使用isin用掩码进行修改

df['IND'] = 0
df.loc[df['VALUE'].isin([1,4]), 'IND'] = 1

对于多种情况,您可以执行以下操作:

mask1 = df['VALUE'].isin([1,4])
mask2 = df['SUBVALUE'].isin([10,40])

df['IND'] = 0
df.loc[mask1 & mask2, 'IND'] = 1

请考虑以下示例:

df = pd.DataFrame({
    'VALUE': [1,1,2,2,3,3,4,4]
})

输出:

    VALUE
0   1
1   1
2   2
3   2
4   3
5   3
6   4
7   4

然后

df['IND'] = 0
df.loc[df['VALUE'].isin([1,4]), 'IND'] = 1

输出:

    VALUE   IND
0   1        1
1   1        1
2   2        0
3   2        0
4   3        0
5   3        0
6   4        1
7   4        1