查找熊猫中只有一个非零值的列

时间:2019-08-23 16:31:47

标签: python pandas

让我首先指出,这个问题非常接近this question,有关为熊猫数据框中的每一列获取非零值,但除了获取值之外,我还想知道该行从中提取。 (并且,最终,我希望能够重新使用代码来查找在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行,但有很多列。如果已经有这个问题的答案,表明我的搜索功能很弱,我将把嘲笑当成应有的理由。

1 个答案:

答案 0 :(得分:2)

如果是melt,然后是groupby

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