如何在 Pandas 数据框中按列值分组
Posted
技术标签:
【中文标题】如何在 Pandas 数据框中按列值分组【英文标题】:How to Group by column value in Pandas Data frame 【发布时间】: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 票的。
【参考方案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 循环,计算值并附加回来。以上是关于如何在 Pandas 数据框中按列值分组的主要内容,如果未能解决你的问题,请参考以下文章