python - 选择值大于 0 的所有列名
问题描述
我有未定义数量的具有某些值的列。例如,假设有 4 列:[a,b,c,d]
,并且每个列名都有关联的值,如下所示:
a b c d
0 23 11 0
11 43 33 22
12 0 12 0
我想在 旁边写另一列d
,它的值大于 0 的列的最大值,例如: 像这样:
a b c d e
0 23 11 0 b,c
11 43 33 22 a,b,c,d
12 0 12 0 a,c
我的尝试:
dic2 = {'a':[12,0,23],'b':[21,23,0],'c':[0,22,33],'d':[0,22,0]}
df = pd.DataFrame(dic2)
df[df>0]
这将在NaN
任何为零的地方返回值,但我不知道如何获取具有这些NaN
值的列。
解决方案
您可以过滤更大0
的值,例如 boolean DataFrame,然后使用DataFrame.dot
列名称进行矩阵乘法,最后通过使用以下索引删除分隔符str
:
df['e'] = df.gt(0).dot(df.columns + ',').str[:-1]
print (df)
a b c d e
0 12 21 0 0 a,b
1 0 23 22 22 b,c,d
2 23 0 33 0 a,c
推荐阅读
- matplotlib - 在终端中下载 mplfinance 后,Matplotlib.finance 没有响应。错误:没有名为“matplotlib.finance”的模块
- wordpress - 在 Wordpress 中的第一条评论之前添加文本
- c - 微过滤器驱动程序在后期操作中附加到用户缓冲区
- ios - 意外的 CFBundle info.list
- powershell - 使用 Powershell 将新文件从外部 HD 复制到桌面
- python - 如何自定义 Django 用户模型?
- javascript - 在 js 中返回 1,2,3 到 n 个数字的总和
- penetration-testing - 环境中的 Windows 10 机器上是否启用了 ADMIN$ 和/或 IPC$ 共享?
- python-3.x - 从python中的列表列表中删除异常值
- jquery - JQuery $签名缺少字符串上下文