【问题标题】:How to Group by column value in Pandas Data frame如何在 Pandas 数据框中按列值分组
【发布时间】:2019-04-15 01:11:03
【问题描述】:

我有这样的熊猫数据框。我想在单独的变量中按 App_Name 分组

App_Name    Date        Response    Gross Revenue
com.apple.tiles2    2018-10-13  3748.723574 24133394
com.orange.thescore 2018-10-13  2034.611964 8273607
com.number.studio   2018-10-13  1807.756545 33736740
com.orange.thescore 2018-10-14  4671.930435 38575556
com.number.studio   2018-10-14  3533.461547 38726087
com.banana.com      2018-10-14  2920.33747  86230313
com.apple.tiles2    2018-10-15  3986.434851 35928884
com.number.studio   2018-10-15  2044.759823 76526368
com.apple.tiles2    2018-10-16  2610.214035 30611434
com.alpha.studio    2018-10-16  1731.429858 11643154
com.banana.com      2018-10-16  1601.387403 13781285
com.alpha.studio    2018-10-17  2769.373388 13198984
com.banana.com      2018-10-17  2205.359489 21974901
com.orange.thescore 2018-10-17  1820.852862 7565015
com.alpha.studio    2018-10-18  2784.822039 24217875
com.banana.com      2018-10-18  2545.899329 28361412
com.orange.thescore 2018-10-18  2052.207745 7544861

我想按 App_Name 对数据进行分组并存储在每个 App_Name 的单独列表或数据框中,如下所示:

App_Name    Date        Response    Gross Revenue
com.alpha.studio    2018-10-16  1731.429858 11643154
com.alpha.studio    2018-10-17  2769.373388 13198984
com.alpha.studio    2018-10-18  2784.822039 24217875

App_Name    Date        Response    Gross Revenue
com.apple.tiles2    2018-10-13  3748.723574 24133394
com.apple.tiles2    2018-10-15  3986.434851 35928884
com.apple.tiles2    2018-10-16  2610.214035 30611434

App_Name    Date        Response    Gross Revenue
com.banana.com      2018-10-14  2920.33747  86230313
com.banana.com      2018-10-16  1601.387403 13781285
com.banana.com      2018-10-17  2205.359489 21974901
com.banana.com      2018-10-18  2545.899329 28361412

App_Name    Date        Response    Gross Revenue
com.number.studio   2018-10-14  3533.461547 38726087
com.number.studio   2018-10-13  1807.756545 33736740
com.number.studio   2018-10-15  2044.759823 76526368

App_Name    Date        Response    Gross Revenue
com.orange.thescore 2018-10-13  2034.611964 8273607
com.orange.thescore 2018-10-14  4671.930435 38575556
com.orange.thescore 2018-10-17  1820.852862 7565015
com.orange.thescore 2018-10-18  2052.207745 7544861

【问题讨论】:

  • df.groupby('App_Name')?
  • 我想知道这个问题是如何在 3 分钟内获得 4 票的。

标签: python pandas pandas-groupby data-science


【解决方案1】:

groupby 对象转换为DataFrames 字典:

d = dict(tuple(df.groupby('App_Name')))

print (d['com.alpha.studio'])
            App_Name        Date     Response     Gross  Revenue
9   com.alpha.studio  2018-10-16  1731.429858  11643154      NaN
11  com.alpha.studio  2018-10-17  2769.373388  13198984      NaN
14  com.alpha.studio  2018-10-18  2784.822039  24217875      NaN

编辑:

d1 = {}
for k, v in d.items():
     d1[k] = v['Gross Revenue'].rolling(2).mean()

【讨论】:

  • 您知道为什么dict(df.groupby('App_Name') 给出TypeError: attribute of type 'str' is not callable 错误吗?这非常奇怪
  • @juanpa.arrivillaga - 抱歉,不知道。
  • @jezrael 我想计算总收入的滚动平均值,并用计算的平均值和相应的日期分别存储日期框架。可以帮忙吗
  • 标准DataFrame的公式是什么?
  • @hamsa - 检查已编辑的答案。是否可以按每个 DataFrame 循环,计算值并附加回来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 2021-09-29
  • 1970-01-01
相关资源
最近更新 更多