Python Pandas:按中值获取行

Bar*_*amo 6 python pandas

我正在尝试获取列的中值行。

我正在使用 data.median() 来获取“列”的中值。

id                 30444.5
someProperty           3.0
numberOfItems          0.0
column                70.0
Run Code Online (Sandbox Code Playgroud)

然后 data.median()['column'] 是:

data.median()['performance']
>>> 70.0
Run Code Online (Sandbox Code Playgroud)

如何获得中值的行或索引?有没有类似于 idxmax / idxmin 的东西?

我尝试过滤,但在多行具有相同值的情况下它不可靠。

谢谢!

j s*_*sad 5

您可以使用rankidxmin并将其应用到每一列:

import numpy as np
import pandas as pd


def get_median_index(d):
    ranks = d.rank(pct=True)
    close_to_median = abs(ranks - 0.5)
    return close_to_median.idxmin()
Run Code Online (Sandbox Code Playgroud)
df = pd.DataFrame(np.random.randn(13, 4))
df
Run Code Online (Sandbox Code Playgroud)
    0           1           2           3
0   0.919681    -0.934712   1.636177    -1.241359
1   -1.198866   1.168437    1.044017    -2.487849
2   1.159440    -1.764668   -0.470982   1.173863
3   -0.055529   0.406662    0.272882    -0.318382
4   -0.632588   0.451147    -0.181522   -0.145296
5   1.180336    -0.768991   0.708926    -1.023846
6   -0.059708   0.605231    1.102273    1.201167
7   0.017064    -0.091870   0.256800    -0.219130
8   -0.333725   -0.170327   -1.725664   -0.295963
9   0.802023    0.163209    1.853383    -0.122511
10  0.650980    -0.386218   -0.170424   1.569529
11  0.678288    -0.006816   0.388679    -0.117963
12  1.640222    1.608097    1.779814    1.028625
Run Code Online (Sandbox Code Playgroud)
    0           1           2           3
0   0.919681    -0.934712   1.636177    -1.241359
1   -1.198866   1.168437    1.044017    -2.487849
2   1.159440    -1.764668   -0.470982   1.173863
3   -0.055529   0.406662    0.272882    -0.318382
4   -0.632588   0.451147    -0.181522   -0.145296
5   1.180336    -0.768991   0.708926    -1.023846
6   -0.059708   0.605231    1.102273    1.201167
7   0.017064    -0.091870   0.256800    -0.219130
8   -0.333725   -0.170327   -1.725664   -0.295963
9   0.802023    0.163209    1.853383    -0.122511
10  0.650980    -0.386218   -0.170424   1.569529
11  0.678288    -0.006816   0.388679    -0.117963
12  1.640222    1.608097    1.779814    1.028625
Run Code Online (Sandbox Code Playgroud)
0    7
1    7
2    3
3    4
Run Code Online (Sandbox Code Playgroud)


CT *_*Zhu 0

可能只是:data[data.performance==data.median()['performance']]