Python Pandas:按中值获取行

时间:2014-06-09 16:18:46

标签: python pandas

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

我正在使用data.median()来获取'column'的中值。

id                 30444.5
someProperty           3.0
numberOfItems          0.0
column                70.0

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

data.median()['performance']
>>> 70.0

如何获取中值的行或索引? 有什么类似于idxmax / idxmin?

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可以使用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()
df = pd.DataFrame(np.random.randn(13, 4))
df
    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
df.apply(get_median_index, 0)
0    7
1    7
2    3
3    4