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')]
*我怀疑有更有效的方法……
标签:python,pandas,data-analysis 来源: https://codeday.me/bug/20190612/1224734.html