python - Pandas Dataframe:根据正/负值分配给不同的列
问题描述
我想要实现的目标如下:
a b c
0 1 0 0
1 -1 0 0
使用上面的数据框,关于 column a
,对于正行,分配给 column 中的相应行b
,对于负值,分配给 column c
:
a b c
0 1 1 0
1 -1 0 -1
我现在正在使用以下代码,但是有什么办法可以用一行而不是两行编写它?
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [1, -1], 'b':[0, 0], 'c':[0,0]})
df.b = np.where(df.a > 0, df.a, df.b)
df.c = np.where(df.a < 0, df.a, df.c)
解决方案
我从写出来开始
df.b, df.c = (df.a > 0)*df.a + (df.a < 0)*df.b, (df.a < 0)*df.a + (df.a > 0)*df.c
然后意识到你可以用你所拥有的东西做同样的拆包。我想有很多方法可以用更晦涩的方式做到这一点
推荐阅读
- python - 使用“python -m venv myvenv”创建的虚拟环境中的 ipython/jupyter 配置文件在哪里?
- db2 - DB2 过程调用文字错误
- amazon-web-services - 面临将 EFS 卷附加到 Kubernetes pod 的问题
- hadoop - 跳过 hive 中损坏的档案
- javascript - 检索带有特殊字符的 json 密钥
- azure-service-fabric - Service Fabric 损坏:未创建 SfDevCluster
- amp-html - 标签“amp-mustache extension .js script”中的属性“src”设置为无效值?
- excel - VBA 将工作表复制到另一个工作簿
- ruby-on-rails - Vagrant Provision 无法安装 Ruby Gem chef-vault
- ubuntu-18.04 - mininet 找不到所需的可执行 ifconfig?