Python 查找表中只有一个非零值的列

Python 查找表中只有一个非零值的列,python,pandas,Python,Pandas,首先让我指出,这个问题非常接近于为pandas dataframe中的每一列获取非零值,但是除了获取值之外,我还想知道它是从哪一行绘制的。(最终,我希望能够重新使用代码来查找非零值出现x次的列。) 我拥有的是一个数据框架,其中包含给定年份文档的字数: |Year / Term | word1 | word2 | word3 | ... | wordn | |------------|-------|-------|-------|-----|-------| | 2001 | 23

首先让我指出,这个问题非常接近于为pandas dataframe中的每一列获取非零值,但是除了获取值之外,我还想知道它是从哪一行绘制的。(最终,我希望能够重新使用代码来查找非零值出现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行,但它有很多很多列。如果这个问题已经有了答案,暴露了我搜索引擎的弱点,我会把嘲笑当作我应得的。

在你的情况下
melt
然后
groupby

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

在您的情况下,
melt
然后
groupby

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

我以前从未遇到过
melt
。我将尝试它,并检查这个回答,如果这是有效的,谢谢你!我以前从未遇到过
melt
。我将尝试它,并检查这个回答,如果这是有效的,谢谢你!