pandas - 熊猫系列的真值模棱两可
问题描述
我正在尝试根据另一列值是否在列表中,在 pandas 的数据框中设置一列。我尝试:
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
解决方案
您需要分配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
推荐阅读
- azure-devops - 如何在 Azure DevOps 工作项模板中添加消息“选择字段‘XYZ’的值”,而不将该字段标记为必填?
- qt - Qt 中有哪些工具可以解码 HTML 4 实体?
- excel - Texbox 设置谷歌浏览器路径?
- java - 如何执行join();mainThread 上的函数?
- javascript - 幻灯片效果很奇怪
- android - 如何修复listview值单个字符串对android有多个值
- android - 我的Android App 支持7.0 及以上版本,但不支持6 和5
- python - 尝试使用 pandas_datareader 从列表中创建数据框
- c - C - 将数据写入文件,要么全部写入,要么不写入
- php - 在 PHP 中,当类不存在时,为什么 \Foo\Bar::class 不会产生错误?