在Pandas DataFrame中按重复日期统计列内容及对PEMAKAIAN列按日期求和的可行性与实现方法
当然可以实现啦!这在Pandas里是非常常见的分组聚合操作,完全能满足你的需求。我给你用示例代码一步步演示具体怎么做:
实现步骤与示例代码
1. 先准备数据(模拟你的场景)
假设你的DataFrame包含日期列(比如叫TANGGAL)、需要统计内容的列(比如ITEM),以及要求和的PEMAKAIAN列,先构造一个模拟数据:
import pandas as pd # 模拟你的原始数据 data = { 'TANGGAL': ['2024-05-01', '2024-05-01', '2024-05-02', '2024-05-02', '2024-05-02'], 'ITEM': ['Buku', 'Pensil', 'Buku', 'Penggaris', 'Pensil'], 'PEMAKAIAN': [5, 10, 7, 3, 8] } df = pd.DataFrame(data)
2. (可选)确保日期列是datetime类型
如果你的日期列目前是字符串格式,建议先转换成datetime类型,避免分组时出现格式问题:
df['TANGGAL'] = pd.to_datetime(df['TANGGAL'])
3. 分组聚合:按日期统计列内容 + 求和PEMAKAIAN
用groupby配合agg方法,一次性完成两个需求:
# 按日期分组,把同日期的ITEM用逗号拼接,同时对PEMAKAIAN求和 result_df = df.groupby('TANGGAL').agg( # 统计同日期的ITEM内容,用逗号分隔 DAFTAR_ITEM=('ITEM', lambda x: ', '.join(x)), # 对同日期的PEMAKAIAN求和 TOTAL_PEMAKAIAN=('PEMAKAIAN', 'sum') ).reset_index() # 查看结果 print(result_df)
运行结果示例
输出会是这样的格式:
TANGGAL DAFTAR_ITEM TOTAL_PEMAKAIAN 0 2024-05-01 Buku, Pensil 15 1 2024-05-02 Buku, Penggaris, Pensil 18
额外调整说明
如果你的需求有变化,比如想对ITEM去重后再统计,只需要把lambda函数改成:
DAFTAR_ITEM=('ITEM', lambda x: ', '.join(set(x)))
或者如果需要保留ITEM的重复但用换行分隔,也可以把分隔符换成'\n',灵活调整即可。
内容的提问来源于stack exchange,提问作者mkholilullah
相关产品推荐
相关产品推荐

