【问题标题】:Python Pandas GroupBy and Size - Read ValuesPython Pandas GroupBy 和大小 - 读取值
【发布时间】:2021-11-29 05:55:29
【问题描述】:

对不起,我是新手。希望我的问题没问题。 我正在尝试使用 pandas 来处理 SQL 查询的输出。 这是我的代码:

data = pandas.read_sql(sql_query, cnxn)

alarmcount = data.groupby(['Module', 'Attribute']).size()
print(alarmcount)

打印语句显示以下内容,这是完美的,正是我想要的。

Module      Attribute
TEST_ALM    ALARM1       23
            ALARM2        9
TEST_ALM_1  ALARM1       17
TEST_ALM_2  ALARM1       13

但是,在我的一生中,我无法弄清楚如何将所有这三列的数据作为字符串和整数读入我的代码中,以便我可以根据需要进一步处理它们?

我已经做了一段时间并且取得了部分成功。 下面的两个打印语句:

print(alarmcount.tolist())
print(type(alarmcount))

tolist() 函数返回最后一列很好,但我仍然无法将前两列的数据作为字符串访问。

[23, 9, 17, 13]
<class 'pandas.core.series.Series'>

【问题讨论】:

    标签: python pandas pandas-groupby


    【解决方案1】:

    groupby.size 之后的输出是Series with MultiIndex

    一个想法是由Series.reset_index 创建DataFrame 并按列选择:

     df = data.groupby(['Module', 'Attribute']).size().reset_index(name='vals')
    
     print (df['Vals'].tolist())
     print (df['Module'].tolist())
    

    或者如果需要在MultiIndex 中选择级别,请使用Index.get_level_values

    alarmcount = data.groupby(['Module', 'Attribute']).size()
    
    print(alarmcount.index.get_level_values('Module').tolist())
    

    【讨论】:

    • 非常感谢
    猜你喜欢
    • 2017-08-05
    • 2021-12-15
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 2021-08-01
    • 2018-05-09
    • 2014-09-21
    • 2021-10-20
    相关资源
    最近更新 更多