agg() 函数,聚合函数

Python - Pandas系列-最强的agg解释!

数据表格有一列是‘设备名称’和一列‘购买月’,以购买月为索引列,将同一个月购买的设备的设备名称汇总了一个单元格中。

import pandas as pd

# 创建数据框
df = pd.DataFrame({'设备名称': ['设备A', '设备B', '设备C', '设备D', '设备E'], '购买月': ['2021-01', '2021-01', '2021-02', '2021-02', '2021-03']})

# 按照购买月分组,并将设备名称合并到一个单元格中
df_grouped = df.groupby('购买月')['设备名称'].agg(lambda x: ', '.join(x))

# 显示结果
print(df_grouped)

结果:

购买月
2021-01    设备A, 设备B
2021-02    设备C, 设备D
2021-03         设备E

在上面的代码中,我们首先创建了一个数据框 df,包含两列数据:设备名称 和 购买月。然后,我们使用 .groupby() 函数将数据框按照 购买月 列进行分组,并使用 .agg() 函数将同一个月购买的设备的设备名称合并到一个单元格中。在 .agg() 函数中,我们使用 lambda 表达式将设备名称合并成一个字符串,使用 , 分隔不同的设备名称。最后,我们将结果显示出来。

注意:在使用 .groupby() 函数进行分组时,需要指定分组的列名。在使用 .agg() 函数进行聚合时,可以使用 lambda 表达式对分组后的数据进行自定义处理。

数据表格有一列是‘设备名称’,一列是‘设备编码’,还有一列是‘购买月’。设备名称和设备编码是一一对应的。以购买月为索引列,将同一个月购买的设备的设备名称汇总到一个单元格中,设备编码汇总到一个单元格中。

python
import pandas as pd

# 创建数据框
df = pd.DataFrame({'设备名称': ['设备A', '设备B', '设备C', '设备D', '设备E'], '设备编码': ['1001', '1002', '1003', '1004', '1005'], '购买月': ['2021-01', '2021-01', '2021-02', '2021-02', '2021-03']})

# 按照购买月分组,并将设备名称和设备编码合并到一个单元格中
df_grouped = df.groupby('购买月').agg({'设备名称': lambda x: ', '.join(x), '设备编码': lambda x: ', '.join(x)})

# 显示结果
print(df_grouped)

结果:

             设备名称        设备编码
购买月                          
2021-01  设备A, 设备B  1001, 1002
2021-02  设备C, 设备D  1003, 1004
2021-03       设备E        1005

在上面的代码中,我们首先创建了一个数据框 df,包含三列数据:设备名称、设备编码 和 购买月。然后,我们使用 .groupby() 函数将数据框按照 购买月 列进行分组,并使用 .agg() 函数将同一个月购买的设备的设备名称和设备编码合并到一个单元格中。在 .agg() 函数中,我们使用字典将 设备名称 和 设备编码 列分别映射到对应的合并函数。在合并函数中,我们使用 lambda 表达式将设备名称和设备编码合并成一个字符串,使用 , 分隔不同的设备名称和设备编码。最后,我们将结果显示出来。

注意:在使用 .groupby() 函数进行分组时,需要指定分组的列名。在使用 .agg() 函数进行聚合时,可以使用字典将不同的列映射到对应的合并函数。

数据表格有一列是‘设备名称’和一列‘购买月’,以购买月为索引列,将同一个月购买的设备的设备名称汇总了一个单元格中。并新增一列,该列为这个月购买设备的台数。

使用 Pandas 的 .groupby() 和 .agg() 函数将同一个月购买的设备的设备名称汇总到一个单元格中,并使用 .size() 函数统计每个月购买设备的台数。以下是代码示例:

import pandas as pd

# 创建数据框
df = pd.DataFrame({'设备名称': ['设备A', '设备B', '设备C', '设备D', '设备E'], '购买月': ['2021-01', '2021-01', '2021-02', '2021-02', '2021-03']})

# 按照购买月分组,并将设备名称合并到一个单元格中
df_grouped = df.groupby('购买月')['设备名称'].agg(lambda x: ', '.join(x)).reset_index()

# 统计每个月购买设备的台数,并添加到数据框中
df_grouped['购买台数'] = df.groupby('购买月').size().reset_index(drop=True)

# 显示结果
print(df_grouped)

结果:
在上面的代码中,我们首先创建了一个数据框 df,包含两列数据:设备名称 和 购买月。然后,我们使用 .groupby() 函数将数据框按照 购买月 列进行分组,并使用 .agg() 函数将同一个月购买的设备的设备名称合并到一个单元格中。在合并函数中,我们使用 lambda 表达式将设备名称合并成一个字符串,使用 , 分隔不同的设备名称。然后,我们使用 .reset_index() 函数重置索引,将 购买月 列变为普通列。接着,我们使用 .size() 函数统计每个月购买设备的台数,并使用 .reset_index(drop=True) 函数重置索引,并将结果赋值给 df_grouped[‘购买台数’] 列。最后,我们将结果显示出来。

注意:在使用 .groupby() 函数进行分组时,需要指定分组的列名。在使用 .agg() 函数进行聚合时,可以使用 lambda 表达式对分组后的数据进行自定义处理。

报错

PATTERN_CONFLICT_year[['nid','month']].groupby('nid').agg({'month': lambda x: ', '.join(x)}),报错:{TypeError}TypeError('sequence item 0: expected str instance, int found')

这个错误通常是因为 join() 函数需要的是字符串类型的数据,但是在你的代码中,join() 函数得到的是整数类型的数据。你可以使用 astype() 函数将整数类型的数据转换为字符串类型,然后再使用 join() 函数进行字符串的拼接。以下是修改后的示例代码:

PATTERN_CONFLICT_year[['nid','month']].groupby('nid').agg({'month': lambda x: ', '.join(x.astype(str))})

在上面的代码中,我们使用 astype(str) 函数将整数类型的 month 列转换为字符串类型,然后再使用 join() 函数进行字符串的拼接。这样就能够避免上述错误的发生。

另外,如果你想要将 month 列的整数类型转换为日期类型,可以使用 Pandas 的 to_datetime() 函数进行转换。以下是示例代码:

PATTERN_CONFLICT_year['month'] = pd.to_datetime(PATTERN_CONFLICT_year['month'], format='%Y%m')

在上面的代码中,我们使用 to_datetime() 函数将 month 列的整数类型转换为日期类型,并指定日期的格式为 %Y%m。这样就能够将整数类型的年月数据转换为日期类型,方便后续的时间序列分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值