python - 为 Pandas 广播操作指定索引
问题描述
我有一个 Pandas 数据框,我想对其应用条件,并在另一个数据框上使用生成的索引。举个简单的例子:
a = pd.DataFrame(np.array([[1, 1, 2], [1, 2, 2], [2, 2, 1]]), columns=['a', 'b', 'c'])
a b c
0 1 1 2
1 1 2 2
2 2 2 1
b = pd.Series([111, 222, 333], index=['a', 'b', 'c'])
a 111
b 222
c 333
在此示例中,我想创建第三个数组,其尺寸与“a”相同,值为 1(或 True),其中 a == 2:
a b c
0 0 0 333
1 0 222 333
2 111 222 0
我的问题是,我怎样才能执行这样的操作并指定一个轴?我怀疑解决方案是以某种方式使用 pd.where,尽管我不想保留任何原始值。
解决方案
IIUC
a.eq(2).mul(b,axis=1)
Out[803]:
a b c
0 0 0 333
1 0 222 333
2 111 222 0
正如你提到的pd.where
a.mask(a==1,0).mask(a==2,b,axis=1)
Out[834]:
a b c
0 0 0 333
1 0 222 333
2 111 222 0
推荐阅读
- haskell - 数据构造函数不在范围内 - Haskell
- javascript - 使用构造函数移动心脏
- javascript - React Native 上的 Like 按钮?我不能让它动态更新
- php - WooCommerce:获取选择的包裹运输方式并将其存储为订单项目元数据
- haskell - Optparse-applicative:连续解析(ReadM)
- node.js - 如何在打开另一个本地字段之前解决一个本地字段中所有外国字段的mongodb聚合查找返回结果
- java - mTLS/TLS Redis 6 问题 Java
- sql - 访问“f0_”字段
- typescript - 测试时如何在异步 api 回调中处理 Promise.all
- linux - Linux:如果没有设置 SETUID 和 Capabilities,为什么我可以使用 ping?