【问题标题】:Groupby (?) dataframe by specfic list按特定列表分组(?)数据框
【发布时间】:2020-10-23 02:39:40
【问题描述】:

我想创建一个表格,对特定的标题子集进行分组,以列表 (group1) 的形式给出,并显示每个标题的计数。我想要的输出看起来像这样:

group1:满,2
group1:部分,1
B1:满,1
C13:满 1

当前版本代码中的 groupby 工作正常 ~ 很好,但我不确定如何合并 'group1' 列表。

import pandas as pd
import matplotlib.pyplot as plt 

df = pd.DataFrame({'Title': ['A1', 'A2', 'A3', 'B1', 'C13'], 
                    'Whole': ['full', 'full', 'part','full','full']})

df_count = df.groupby(['Title', 'Whole']).agg({'Whole' : ['count']})

group1 = ['A1', 'A2', 'A3']

print(df)
print(df_count)

【问题讨论】:

    标签: python pandas dataframe group-by


    【解决方案1】:

    希望我正确理解了您的问题:

    df = pd.DataFrame({'Title': ['A1', 'A2', 'A3', 'B1', 'C13'], 
                        'Whole': ['full', 'full', 'part','full','full']})
    
    group1 = ['A1', 'A2', 'A3']
    
    from collections import Counter
    
    m = ~df['Title'].isin(group1)
    print( df.groupby(m.cumsum() * m).agg({'Title': set, 'Whole': Counter}) )
    

    打印:

                  Title                   Whole
    Title                                      
    0      {A2, A1, A3}  {'full': 2, 'part': 1}
    1              {B1}             {'full': 1}
    2             {C13}             {'full': 1}
    

    【讨论】:

    • 这正是我想要的。这比我的技能水平高一点,所以我会继续理解它。谢谢。
    • 如果我只想要一个“group1”或者我想指定多个组,我该怎么做?
    • @Olka 这有点复杂。我建议在 Stack Overflow 上打开一个新问题并描述您的问题(以及您已经尝试过的代码)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2015-07-15
    • 1970-01-01
    • 2021-08-18
    • 2021-06-26
    相关资源
    最近更新 更多