【问题标题】:Groupby a dataframe conditioned on "subset" relationship?Groupby 以“子集”关系为条件的数据框?
【发布时间】:2023-02-23 00:49:49
【问题描述】:

使用以下方法生成示例数据框:

import pandas as pd

pd.DataFrame({'A': [{'A', 'B'}, {'A', 'B', 'C', 'E'}, {'B', 'D'}, {'C', 'B'}, {'A', 'B', 'D'}, {'X'}], 'B': [111, 222, 333, 444, 555, 666]})

看起来像这样:

我需要根据基于“子集”关系的“A”列值按数据框分组,即

  • 第一组将包括索引 0、1、3;
  • 第二组将包括索引 2、4;
  • 第三组将包括索引 4。

因为 {'A', 'B'} 和 {'C', 'B'} 是 {'A', 'B', 'C', 'E'} 的子集,而 {'B', 'D' } 是 {'A', 'B', 'D'} 的子集。 {'X'} 不是 A 列中任何其他值的子集。

有什么办法可以做到这一点?谢谢!

【问题讨论】:

标签: pandas dataframe set subset


【解决方案1】:

请注意,您可以将每个集合与 <= 运算符进行比较以检查它是否是一个子集。例如:

>>> small = {'A', 'B'}
>>> big = {'A', 'B', 'C', 'E'}
>>> small <= big
True
>>> big <= small
False

对于任何给定的列,如果给定值是一个子集,您可以获得真/假系列。例如,在您的数据框中:

>>> df['A'].iloc[0] <= df['A']
0     True
1     True
2    False
3    False

从那里开始,考虑如何使用此类关系进行分组。祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 2015-11-08
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多