python - 获取中位数对应的索引

标签 python pandas dataframe indexing median

我有一个包含一列的 pandas 数据框,我想知道中位数的索引。也就是说,我这样确定中位数:

df.median()

这给了我中值,但我想知道该行的索引。这个可以确定吗?对于长度不均匀的列表,我可以搜索具有该值的索引,但对于均匀的列表长度,这是行不通的。有人可以帮忙吗?

这个问题是在另一篇文章中提出的,答案基本上是搜索与中位数具有相同值的行。但正如我所说,这对于偶数长度的列表不起作用。

下面是一个最小示例(我在下面包含了 Wen 的建议):

df = pd.DataFrame(np.random.randn(6, 1), columns=list('A'))
df.median()
df.loc[df[0]==df[0].median()]

Out[120]: 
Empty DataFrame
Columns: [0]
Index: []

最佳答案

您可以使用 Wen 的答案来处理奇数长度的数据帧。

对于偶数长度的数据帧,这个问题实际上没有意义。正如您所指出的,数据框中不存在中位数。但是,您可以按感兴趣的列对数据框进行排序,然后找到两个“中值”值的索引。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(6, 1), columns=list('A'))
df.median()

df.loc[df['A']==df['A'].median()]

df.sort_values(by='A', inplace=True)

df[df['A'] > df['A'].median()].iloc[0]
df[df['A'] < df['A'].median()].iloc[-1]

关于python - 获取中位数对应的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46411507/

相关文章:

python - 如何让用户只删除他们在 Django 中创建的对象?

python - 如何根据已经制作的 pandas 日期范围系列对特定日期进行分类(排序)?

python - 使用 for 循环更改多列的类别类型

python - 我可以调整这个seaborn 热图中颜色条的比例吗?

python - 用 os.execl 替换正在运行的 python 脚本

python - 如何获得识别肤色的阈值?

python - 为什么 2**1024 工作而 2**(2048/2) 导致 OverflowError?

python - 将稀疏字典表示转换为密集数据帧

Python:按 CSV 中的唯一列合并重复项

Python dataframe - 根据列删除连续的行