1

次のようなデータフレームがあるとしましょう:

df = pd.DataFrame([[1.1, 1.1, 1.1, 2.6, 2.5, 3.4,2.6,2.6,3.4,3.4,2.6,1.1,1.1,3.3], list('AAABBBBABCBDDD'), [1.1, 1.7, 2.5, 2.6, 3.3, 3.8,4.0,4.2,4.3,4.5,4.6,4.7,4.7,4.8], ['x/y/z','x/y','x/y/z/n','x/u','x','x/u/v','x/y/z','x','x/u/v/b','-','x/y','x/y/z','x','x/u/v/w'],['1','3','3','2','4','2','5','3','6','3','5','1','1','1']]).T
df.columns = ['col1','col2','col3','col4','col5']

DF:

   col1 col2 col3     col4 col5
0   1.1    A  1.1    x/y/z    1
1   1.1    A  1.7      x/y    3
2   1.1    A  2.5  x/y/z/n    3
3   2.6    B  2.6      x/u    2
4   2.5    B  3.3        x    4
5   3.4    B  3.8    x/u/v    2
6   2.6    B    4    x/y/z    5
7   2.6    A  4.2        x    3
8   3.4    B  4.3  x/u/v/b    6
9   3.4    C  4.5        -    3
10  2.6    B  4.6      x/y    5
11  1.1    D  4.7    x/y/z    1
12  1.1    D  4.7        x    1
13  3.3    D  4.8  x/u/v/w    1

次の出力を取得したい

t = df.groupby('col5').col1.size()
t.sort()
t[-3:] 

出力:

col5
5       2
1       4
3       4

次に、「col5」値に対応する「col1」値を取得したいと思います。次のように1つずつ取得できます。

df[df['col5'] == '5']['col1'].unique()

しかし、一度に 3 つすべて (または n 個の数字) を取得したいと考えています。出来ますか?これを行う方法?

4

2 に答える 2

1

使用isinして、必要な値をフィルタリングします。

In [34]: df[df.col5.isin(t[-3:].index)]['col1'].unique()
Out[34]: array([1.1, 2.6, 3.4, 3.3], dtype=object)
于 2013-07-16T10:01:45.023 に答える