我有以下数据框df

import pandas as pd
df = pd.DataFrame([[1, 1, 2, 2, 2, 3,4,5,5,5,6,6,6,6],
                   list('AABBBCDEEEFFFF'),
                   [1, 2, 3, 4, 5, 6,7,8,9,10,11,12,13,14],
                   [1, 2, 3, 4, 5, 6,7,8,9,11,12,11,11,11]]).T
df.columns = ['col1','col2','col3','col4']

df
Out[4]:
   col1 col2 col3 col4
0     1    A    1    1
1     1    A    2    2
2     2    B    3    3
3     2    B    4    4
4     2    B    5    5
5     3    C    6    6
6     4    D    7    7
7     5    E    8    8
8     5    E    9    9
9     5    E   10   11
10    6    F   11   12
11    6    F   12   11
12    6    F   13   11
13    6    F   14   11


我按以下顺序按其列分组

df.groupby(['col1','col2','col3']).size()

Out[7]:
col1  col2  col3
1     A     1       1
            2       1
2     B     3       1
            4       1
            5       1
3     C     6       1
4     D     7       1
5     E     8       1
            9       1
            10      1
6     F     11      1
            12      1
            13      1
            14      1


如何为只有一个条目的组提取col3的值?

df_return
Out[4]:
   col3
0     6
1     7

最佳答案

您可以通过将col1col2传递给.groupby,然后使用.filter选择长度(即大小)等于1的组来执行此操作。

df_return = df.groupby(['col1','col2']).filter(lambda x: len(x) == 1)['col3']

print df_return
# 5    6
# 6    7

关于python - 在 Pandas 多索引数据框中选择只有1个条目的元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49679447/

10-09 03:08