首页 > 解决方案 > 在 pandas 中查找只有一个非零值的列

问题描述

首先让我注意到这个问题非常接近关于为 pandas 数据框中的每一列获取非零值的问题,但除了获取值之外,我还想知道它是从哪一行绘制的。(最终,我希望能够重新使用代码来查找非零值出现 x 次的列。)

我所拥有的是一个数据框,其中包含给定年份文档的字数:

|Year / Term | word1 | word2 | word3 | ... | wordn |
|------------|-------|-------|-------|-----|-------|
| 2001       |  23   |   0   |   0   |     |   0   |
| 2002       |   0   |   0   |  12   |     |   0   |
| 2003       |   0   |  42   |  34   |     |   0   |
| year(n)    |   0   |   0   |   0   |     |  45   |

因此,word1我想同时获得 23 和 2001 —— 这可以是元组或字典。(只要我能处理数据,这并不重要。)最终,我非常希望能够发现它word3享受了两年的使用时间。

FTR,数据框只有 16 行,但它有很多很多列。如果这个问题已经有了答案,暴露了我搜索fu的弱点,我会以鄙视作为我应得的。

标签: pythonpandas

解决方案


在你的情况meltgroupby

df.melt('Year / Term').loc[lambda x : x['value']!=0].groupby('variable')['value'].apply(tupl)

推荐阅读