如何在 Pandas 数据框中获取按 groupby 组合的行的值列表?

马丁·托马

假设我有以下数据框:

#!/usr/bin/env python

import pandas as pd


df = pd.DataFrame([(1, 2, 1),
                   (1, 2, 2),
                   (1, 2, 3),
                   (4, 1, 612),
                   (4, 1, 612),
                   (4, 1, 1),
                   (3, 2, 1),
                   ],
                  columns=['groupid', 'a', 'b'],
                  index=['India', 'France', 'England', 'Germany', 'UK', 'USA',
                         'Indonesia'])
print(df)

这使:

           groupid  a    b
India            1  2    1
France           1  2    2
England          1  2    3
Germany          4  1  612
UK               4  1  612
USA              4  1    1
Indonesia        3  2    1

步骤1

这一步可能没有必要/与我想象的不同。我实际上只对第 2 步感兴趣,但这有助于我思考它并解释我想要什么。

我想按 groupid ( df.groupby(df['groupid']))对数据进行分组并得到如下内容:

    groupid  a    b
          1  [2]  [1, 2, 3]
          4  [1]  [612, 1]
          3  [2]  [1]

第2步

然后我想找到所有在 b 列中只有一个条目并且该条目等于1.

同样,我想找到所有具有多个条目或一个不是1.

耶斯列

您可以比较sets,然后将索引的值与lists 进行比较:

mask = df.groupby('groupid')['b'].apply(set) == set([1])
print (mask)
groupid
1    False
3     True
4    False
Name: b, dtype: bool

i = mask.index[mask].tolist()
print (i)
[3]

j = mask.index[~mask].tolist()
print (j)
[1, 4]

对于新列使用map

df['new'] = df['groupid'].map(df.groupby('groupid')['b'].apply(set) == set([1]))
print (df)

           groupid  a    b    new
India            1  2    1  False
France           1  2    2  False
England          1  2    3  False
Germany          4  1  612  False
UK               4  1  612  False
USA              4  1    1  False
Indonesia        3  2    1   True

旧解决方案:

您可以使用transformwith nuniquefor newSeries与原始 df 相同的大小,因此可以将其与1唯一性进行比较,然后将另一个条件链接到与 比较1

mask = (df.groupby('groupid')['b'].transform('nunique') == 1) & (df['b'] == 1)
print (mask)
India        False
France       False
England      False
Germany      False
UK           False
USA          False
Indonesia     True
Name: b, dtype: bool

对于lists 中的唯一值

i = df.loc[mask, 'groupid'].unique().tolist()
print (i)
[3]

j = df.loc[~mask, 'groupid'].unique().tolist()
print (j)
[1, 4]

细节:

print (df.groupby('groupid')['b'].transform('nunique'))
India        3
France       3
England      3
Germany      2
UK           2
USA          2
Indonesia    1
Name: b, dtype: int64

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Pandas数据框中按行值对日期时间列进行排序?

来自分类Dev

根据groupby值从Pandas数据框中删除行

来自分类Dev

如何在Pandas数据框中按值获取确切的行和列号,即单元格地址

来自分类Dev

Pandas Groupby:如何获取不同的列值

来自分类Dev

如何在Pandas数据框中按名称选择行列表?

来自分类Dev

如何在linq groupby中获取分组值的列表?

来自分类Dev

如何在pandas数据框中获取具有部分总和的列(按两列分组)

来自分类Dev

根据行值从 Pandas 数据框中获取列表

来自分类Dev

如何在 python pandas 数据框中获取不同的值计数

来自分类Dev

重复行的Pandas Groupby数据框

来自分类Dev

在使用Pandas的数据框中按行获取最频繁的值时出现问题

来自分类Dev

如何在Pandas Groupby中消除聚合列的其他行

来自分类Dev

如何按唯一值分组pandas groupby

来自分类Dev

如何在Pandas数据框中查找值

来自分类Dev

Pandas GroupBy:如何基于列获取前n个值

来自分类Dev

如何在pandas groupby中添加新列?

来自分类Dev

如何在pandas groupby中输出大量直方图

来自分类Dev

Pandas Groupby删除发生特定值组合的行

来自分类Dev

如何在数据框中按行处理数据

来自分类Dev

写入Excel时如何在groupby之后在数据框中删除空值

来自分类Dev

如何在pandas.groupby函数中为每个组创建一个数据框?

来自分类Dev

如何计算groupby数据框中的列的值?

来自分类Dev

如何在 Pandas 数据框中将 join() 与 groupby 一起使用,以便可以使用分隔符分隔值

来自分类Dev

如何在python pandas中仅组合给定的行?

来自分类Dev

如何在组合框下拉列表中获取每个值?

来自分类Dev

如何从Pandas Groupby中的多个列中获取唯一值

来自分类Dev

如何使用pandas groupby函数基于groupby值应用公式

来自分类Dev

如何基于pandas中的groupby函数将数据框中的特定列转换为字典?

来自分类Dev

如何为数据框重置Pandas中的行值?

Related 相关文章

  1. 1

    如何在Pandas数据框中按行值对日期时间列进行排序?

  2. 2

    根据groupby值从Pandas数据框中删除行

  3. 3

    如何在Pandas数据框中按值获取确切的行和列号,即单元格地址

  4. 4

    Pandas Groupby:如何获取不同的列值

  5. 5

    如何在Pandas数据框中按名称选择行列表?

  6. 6

    如何在linq groupby中获取分组值的列表?

  7. 7

    如何在pandas数据框中获取具有部分总和的列(按两列分组)

  8. 8

    根据行值从 Pandas 数据框中获取列表

  9. 9

    如何在 python pandas 数据框中获取不同的值计数

  10. 10

    重复行的Pandas Groupby数据框

  11. 11

    在使用Pandas的数据框中按行获取最频繁的值时出现问题

  12. 12

    如何在Pandas Groupby中消除聚合列的其他行

  13. 13

    如何按唯一值分组pandas groupby

  14. 14

    如何在Pandas数据框中查找值

  15. 15

    Pandas GroupBy:如何基于列获取前n个值

  16. 16

    如何在pandas groupby中添加新列?

  17. 17

    如何在pandas groupby中输出大量直方图

  18. 18

    Pandas Groupby删除发生特定值组合的行

  19. 19

    如何在数据框中按行处理数据

  20. 20

    写入Excel时如何在groupby之后在数据框中删除空值

  21. 21

    如何在pandas.groupby函数中为每个组创建一个数据框?

  22. 22

    如何计算groupby数据框中的列的值?

  23. 23

    如何在 Pandas 数据框中将 join() 与 groupby 一起使用,以便可以使用分隔符分隔值

  24. 24

    如何在python pandas中仅组合给定的行?

  25. 25

    如何在组合框下拉列表中获取每个值?

  26. 26

    如何从Pandas Groupby中的多个列中获取唯一值

  27. 27

    如何使用pandas groupby函数基于groupby值应用公式

  28. 28

    如何基于pandas中的groupby函数将数据框中的特定列转换为字典?

  29. 29

    如何为数据框重置Pandas中的行值?

热门标签

归档