gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 02:20:06 24 4
gpt4 key购买 nike

我正在尝试根据项目值返回列名和索引。我有这样的东西:

enter image description here

今天我将尝试返回所有值 > 0.75 的索引和列名。

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

我想让这个返回“交通和抢劫”。但是,这会返回所有值。我没有在文档、在线或此处找到对此的答案。提前谢谢你。

最佳答案

使用略有不同的数字(无特殊原因),您可以堆叠到一个系列,然后使用 bool 索引:

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 来删除重复项,一种方法*是使用 triu 将不在对角线上的那些设为 0(不幸的是,这不会作为 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 根据项目值返回索引和列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25376658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com