<font color=red>[已解决]</font>数据帧汇总的问题,求帮忙,谢谢

查看 68|回复 3
作者:futui   

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

您需要 登录 才可以下载或查看,没有账号?立即注册
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
  
最佳答案
月排行榜 /
总排行榜

isdkz
昨天 13:42
根据你的问题,我理解你想要对数据帧1(df1)进行汇总,将相同名称的行汇总并将数量相加,然后生成新的数据帧2(df2)。以下是使用Python和pandas库实现此操作的代码:
[ol]
  • 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)
  • [/ol]复制代码
    运行此代码后,你将得到如下数据帧(df2):
    [ol]
  •       名称     数量
  • 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
  • [/ol]复制代码
    这样你就可以得到想要的汇总后的数据帧(df2)了。

    跳转到最佳答案楼层
    .best_avatar img{width: 30px;height: 30px;border-radius: 30px;}

    名称, 数据

  • futui
    OP
      

    .pct{min-height:100px;}

    根据你的问题,我理解你想要对数据帧1(df1)进行汇总,将相同名称的行汇总并将数量相加,然后生成新的数据帧2(df2)。以下是使用Python和pandas库实现此操作的代码:
    [ol]
  • 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)
  • [/ol]复制代码
    运行此代码后,你将得到如下数据帧(df2):
    [ol]
  •       名称     数量
  • 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
  • [/ol]复制代码
    这样你就可以得到想要的汇总后的数据帧(df2)了。
  • futui
    OP
      

    我运行的结果,怎么是这样
          名称          日期     数量
    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
    似乎实际只删除 了空行
    futui
    OP
      


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

    不对呀,我执行没问题呀,你试试这个代码:
    [ol]
  • 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)
  • [/ol]复制代码
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部