在多索引列上进行瓶坯聚合

德罗

我从这个数据帧开始:

df = pd.DataFrame(
    [
        ["a", "aa", "2020-12-20", 10],
        ["a", "ab", "2020-12-26", 11],
        ["a", "aa", "2020-12-22", 10],
        ["b", "bb", "2020-12-25", 111],
        ["c", "bb", "2020-12-20", 20],
        ["d", "dd", "2020-12-05", 1111]
    ],
    columns=["cat", "user", "date", "value"]
)
df["date"] = pd.to_datetime(df.date)
用户 日期
0 一种 a 2020-12-20 00:00:00 10
1个 一种 2020-12-26 00:00:00 11
2 一种 a 2020-12-22 00:00:00 10
3 b bb 2020-12-25 00:00:00 111
4 C bb 2020-12-20 00:00:00 20
5 d dd 2020-12-05 00:00:00 1111

接下来,我正在运行以下聚合:

gb = (
    df.set_index("date")
    .groupby("cat")
    .resample("W")
    .agg(
        {"value": "sum", "user": ["nunique", lambda x: x.unique()]}
    )
    .rename({"<lambda>": "unqiue_users"}, axis=1)
)

这将在表中产生带有multiindex的

               value    user             
                 sum nunique unqiue_users
cat date                                 
a   2020-12-20    10       1           aa
    2020-12-27    21       2     [aa, ab]
b   2020-12-27   111       1           bb
c   2020-12-20    20       1           bb
d   2020-12-06  1111       1           dd

最后,我正在尝试对最后的结果运行聚合,例如:

gb.groupby(level=0)[["value", "sum"]].mean()

我不知道如何“访问”具有多索引的列。任何想法?

耶斯列尔

对于选择MultiIndex和使用的元组,这里使用一个元素列表:

print (gb.groupby(level=0)[[("value", "sum")]].mean())
      value
        sum
cat        
a      15.5
b     111.0
c      20.0
d    1111.0

或者您可以mean按级别使用简化解决方案

print (gb[[("value", "sum")]].mean(level=0))
      value
        sum
cat        
a      15.5
b     111.0
c      20.0
d    1111.0

对于Series选择省略嵌套列表:

print (gb[("value", "sum")].mean(level=0))
cat
a      15.5
b     111.0
c      20.0
d    1111.0
Name: (value, sum), dtype: float64

您的解决方案应MultiIndex在以下栏中进行更改以避免出现:

gb = (
    df.set_index("date")
    .groupby(["cat", pd.Grouper(freq='W')])
    .agg(val = ("value",  "sum"),
         nuniq = ("user", "nunique"),
         unqiue_users = ("user", lambda x: x.unique()))
    )
    
print (gb)
                 val  nuniq unqiue_users
cat date                                
a   2020-12-20    10      1           aa
    2020-12-27    21      2     [ab, aa]
b   2020-12-27   111      1           bb
c   2020-12-20    20      1           bb
d   2020-12-06  1111      1           dd


print (gb['val'].mean(level=0))
cat
a      15.5
b     111.0
c      20.0
d    1111.0
Name: val, dtype: float64

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在熊猫多索引内的列上进行操作

来自分类Dev

使用Pandas在列上进行多个聚合

来自分类Dev

在多列上进行numpy排序ndarray

来自分类Dev

PostgreSQL:如何在非聚合列上进行选择?

来自分类Dev

在命名水果的两列上进行自定义聚合

来自分类Dev

Pandas groupby,如何在多个列上进行多个聚合?

来自分类Dev

在命名水果的两列上进行自定义聚合

来自分类Dev

在索引列上进行cassandra过滤不起作用

来自分类Dev

在多列上进行adf测试和acf图

来自分类Dev

在多列上进行数据透视查询

来自分类Dev

如何在 SQL-Server 多列上进行透视?

来自分类Dev

在spark数据帧的同一列上进行多个聚合操作

来自分类Dev

如何正确加入以在同一列上进行两次聚合?

来自分类Dev

在多个列上进行不同的查询,并在Postgres中聚合其他列

来自分类Dev

多列上的 MySQL 索引

来自分类Dev

在熊猫中,如何使用“ where”参数在日期时间索引列上进行查询?

来自分类Dev

PostgreSQL:尽管具有GiN索引,但仍在Hstore列上进行顺序表扫描

来自分类Dev

在熊猫中,如何使用“ where”参数在日期时间索引列上进行查询?

来自分类Dev

熊猫:简化表示法,以便在多列上进行简单操作

来自分类Dev

如何在多列上进行完全匹配并显示最新日期?

来自分类Dev

在以列表为元素的熊猫列上进行分组和聚合,并在列表中获取唯一值

来自分类Dev

熊猫,在多索引列上的fillna

来自分类Dev

如何在VARCHAR列上进行分区

来自分类Dev

在数组的特定列上进行计算

来自分类Dev

如何在特定的列上进行操作?

来自分类Dev

在两列上进行子集和比较

来自分类Dev

如何在VARCHAR列上进行分区

来自分类Dev

如何在 XML 列上进行 PIVOT?

来自分类Dev

OfType瓶坯铸造而不是过滤器

Related 相关文章

  1. 1

    如何在熊猫多索引内的列上进行操作

  2. 2

    使用Pandas在列上进行多个聚合

  3. 3

    在多列上进行numpy排序ndarray

  4. 4

    PostgreSQL:如何在非聚合列上进行选择?

  5. 5

    在命名水果的两列上进行自定义聚合

  6. 6

    Pandas groupby,如何在多个列上进行多个聚合?

  7. 7

    在命名水果的两列上进行自定义聚合

  8. 8

    在索引列上进行cassandra过滤不起作用

  9. 9

    在多列上进行adf测试和acf图

  10. 10

    在多列上进行数据透视查询

  11. 11

    如何在 SQL-Server 多列上进行透视?

  12. 12

    在spark数据帧的同一列上进行多个聚合操作

  13. 13

    如何正确加入以在同一列上进行两次聚合?

  14. 14

    在多个列上进行不同的查询,并在Postgres中聚合其他列

  15. 15

    多列上的 MySQL 索引

  16. 16

    在熊猫中,如何使用“ where”参数在日期时间索引列上进行查询?

  17. 17

    PostgreSQL:尽管具有GiN索引,但仍在Hstore列上进行顺序表扫描

  18. 18

    在熊猫中,如何使用“ where”参数在日期时间索引列上进行查询?

  19. 19

    熊猫:简化表示法,以便在多列上进行简单操作

  20. 20

    如何在多列上进行完全匹配并显示最新日期?

  21. 21

    在以列表为元素的熊猫列上进行分组和聚合,并在列表中获取唯一值

  22. 22

    熊猫,在多索引列上的fillna

  23. 23

    如何在VARCHAR列上进行分区

  24. 24

    在数组的特定列上进行计算

  25. 25

    如何在特定的列上进行操作?

  26. 26

    在两列上进行子集和比较

  27. 27

    如何在VARCHAR列上进行分区

  28. 28

    如何在 XML 列上进行 PIVOT?

  29. 29

    OfType瓶坯铸造而不是过滤器

热门标签

归档