我试图根据另一列值是否在列表中来设置熊猫数据框中的一列。 我尝试:
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
答案 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