微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Pandas根据项值返回索引和列名

我试图根据项值返回列名和索引.
我有这样的事情:

所以,让我今天尝试返回值为>的所有值的索引和列名称. 0.75.

for date, row in df.iterrows():
    for item in row:
        if item > .75:
            print index, row

我希望这可以归还“交通和抢劫”.
但是,这会返回所有值.我没有在文档,在线或这里找到答案.
先感谢您.

解决方法:

使用稍微不同的数字(没有特殊原因),您可以堆叠到一个系列,然后使用布尔索引:

In [11]: df.stack()
Out[11]:
assault  assault    1.00
         robbery    0.76
         traffic    0.60
robbery  assault    0.76
         robbery    1.00
         traffic    0.78
traffic  assault    0.68
         robbery    0.78
         traffic    1.00
dtype: float64

In [12]: s = df.stack()

In [13]: s[(s!=1) & (s>0.77)]
Out[13]:
robbery  traffic    0.78
traffic  robbery    0.78
dtype: float64

你可以做一些numpy去除重复,一种方式*是0那些不在上对角线与triu(不幸的是,这不会返回为DataFrame :():

In [21]: np.triu(df, 1)
Out[21]:
array([[ 0.  ,  0.76,  0.6 ],
       [ 0.  ,  0.  ,  0.78],
       [ 0.  ,  0.  ,  0.  ]])

In [22]: s = pd.DataFrame(np.triu(df, 1), df.index, df.columns).stack() > 0.77

In [23]: s[s]
Out[23]:
robbery  traffic    True
dtype: bool

In [24]: s[s].index.tolist()
Out[24]: [('robbery', 'traffic')]

*我怀疑有更有效的方法……

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐