鱼C论坛

 找回密码
 立即注册
查看: 1923|回复: 3

[已解决]数据帧汇总的问题,求帮忙,谢谢

[复制链接]
发表于 2023-4-23 13:36:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想把数据帧1汇总,变成数据帧2,求帮忙,谢谢

df1
                 名称           日期                  数量
0            主题混合        2022-08-26         10
1           中混合A          2021-09-28         85
2                                  2022-07-28         5
3           信国A         2022-12-23             33
4           夏混合         2022-04-29            5
5                            2022-08-23             10
6          诺混合             2022-05-05        50
7         汇汽车             2022-05-12         15.8
8                           2022-08-18             2.2
9         方达混             2022-12-23         4.8
10        前混合             2022-12-23        4.67
11                          2022-12-27            3.32      


df2
            名称                      数量
0            主题混合                 10
1           中混合A                   90
2           信国A                     33
3          夏混合                     15
4          诺混合                   50
5         汇汽车                  18.0
6         方达混                    4.8
7        前混合                     7.99
  
最佳答案
2023-4-23 13:42:28
根据你的问题,我理解你想要对数据帧1(df1)进行汇总,将相同名称的行汇总并将数量相加,然后生成新的数据帧2(df2)。以下是使用Python和pandas库实现此操作的代码:
import pandas as pd

data = {'名称': ['主题混合', '中混合A', '', '信国A', '夏混合', '', '诺混合', '汇汽车', '', '方达混', '前混合', ''],
        '日期': ['2022-08-26', '2021-09-28', '2022-07-28', '2022-12-23', '2022-04-29', '2022-08-23', '2022-05-05', '2022-05-12', '2022-08-18', '2022-12-23', '2022-12-23', '2022-12-27'],
        '数量': [10, 85, 5, 33, 5, 10, 50, 15.8, 2.2, 4.8, 4.67, 3.32]}

df1 = pd.DataFrame(data)

# 使用groupby对名称进行分组并汇总数量
df2 = df1.groupby("名称")["数量"].sum().reset_index()

# 删除名称为空的行
df2 = df2[df2["名称"] != ""]

# 重置索引
df2.reset_index(drop=True, inplace=True)

print(df2)

运行此代码后,你将得到如下数据帧(df2):
      名称     数量
0    主题混合  10.00
1    中混合A  90.00
2     信国A  33.00
3     夏混合  15.00
4     诺混合  50.00
5     汇汽车  18.00
6     方达混   4.80
7     前混合   7.99

这样你就可以得到想要的汇总后的数据帧(df2)了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-23 13:42:28 | 显示全部楼层    本楼为最佳答案   
根据你的问题,我理解你想要对数据帧1(df1)进行汇总,将相同名称的行汇总并将数量相加,然后生成新的数据帧2(df2)。以下是使用Python和pandas库实现此操作的代码:
import pandas as pd

data = {'名称': ['主题混合', '中混合A', '', '信国A', '夏混合', '', '诺混合', '汇汽车', '', '方达混', '前混合', ''],
        '日期': ['2022-08-26', '2021-09-28', '2022-07-28', '2022-12-23', '2022-04-29', '2022-08-23', '2022-05-05', '2022-05-12', '2022-08-18', '2022-12-23', '2022-12-23', '2022-12-27'],
        '数量': [10, 85, 5, 33, 5, 10, 50, 15.8, 2.2, 4.8, 4.67, 3.32]}

df1 = pd.DataFrame(data)

# 使用groupby对名称进行分组并汇总数量
df2 = df1.groupby("名称")["数量"].sum().reset_index()

# 删除名称为空的行
df2 = df2[df2["名称"] != ""]

# 重置索引
df2.reset_index(drop=True, inplace=True)

print(df2)

运行此代码后,你将得到如下数据帧(df2):
      名称     数量
0    主题混合  10.00
1    中混合A  90.00
2     信国A  33.00
3     夏混合  15.00
4     诺混合  50.00
5     汇汽车  18.00
6     方达混   4.80
7     前混合   7.99

这样你就可以得到想要的汇总后的数据帧(df2)了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-23 15:02:36 | 显示全部楼层
本帖最后由 futui 于 2023-4-23 15:03 编辑

我运行的结果,怎么是这样
      名称          日期     数量
0   主题混合  2022-08-26  10.00
1   中混合A  2021-09-28  85.00
2         2022-07-28   5.00
3    信国A  2022-12-23  33.00
4    夏混合  2022-04-29   5.00
5         2022-08-23  10.00
6    诺混合  2022-05-05  50.00
7    汇汽车  2022-05-12  15.80
8         2022-08-18   2.20
9    方达混  2022-12-23   4.80
10   前混合  2022-12-23   4.67
11        2022-12-27   3.32
##############
     名称     数量
0  中混合A  85.00
1  主题混合  10.00
2   信国A  33.00
3   前混合   4.67
4   夏混合   5.00
5   方达混   4.80
6   汇汽车  15.80
7   诺混合  50.00
似乎实际只删除 了空行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-23 15:57:35 | 显示全部楼层
futui 发表于 2023-4-23 15:02
我运行的结果,怎么是这样
      名称          日期     数量
0   主题混合  2022-08-26  10.00

不对呀,我执行没问题呀,你试试这个代码:
import pandas as pd

data = {'名称': ['主题混合', '中混合A', '', '信国A', '夏混合', '', '诺混合', '汇汽车', '', '方达混', '前混合', ''],
        '日期': ['2022-08-26', '2021-09-28', '2022-07-28', '2022-12-23', '2022-04-29', '2022-08-23', '2022-05-05', '2022-05-12', '2022-08-18', '2022-12-23', '2022-12-23', '2022-12-27'],
        '数量': [10, 85, 5, 33, 5, 10, 50, 15.8, 2.2, 4.8, 4.67, 3.32]}

df1 = pd.DataFrame(data)

# 使用前一个非空值填充名称列的空值
df1['名称'] = df1['名称'].replace('', method='ffill')

# 使用groupby对名称进行分组并汇总数量
df2 = df1.groupby("名称")["数量"].sum().reset_index()

# 重置索引
df2.reset_index(drop=True, inplace=True)

print(df2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 13:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表