weixin_43428945 2019-09-22 16:43 采纳率: 0%
浏览 3014

python Dataframe获取一列数,每个数是前面几个数的和;看似简单,细思有点意思

原始数据和要求如下:
图片说明
也就是说要求得到的二月份的数据是是原有的一二月的总和,三月份的数据是原有数据一二三月的总和,以此类推
恳请大神出手相助,看看用python怎么样把这列数据按要求弄出来,谢了

  • 写回答

3条回答 默认 最新

  • _Molala_ 2022-06-03 18:19
    关注

    使用DataFrame的apply函数就ok啦,我下面用几个小例子展示以下

    import pandas as pd
    
    # 定义一个全局变量
    s = 0
    
    
    def f1(x):
        global s
        s = x['QTY'] + s  # 每次使用全局变量来叠加返回
        return s
    
    
    # 创建一个类似你的DataFrame
    d = [['Jan', 271], ['Feb', 109], ['Mar', 126], ['Apr', 123]]
    df = pd.DataFrame(d, columns=['Month', 'QTY'])
    print(df)
    print('---------------------')
    # 使用DataFrame自带的函数apply,具体去看一下官方文档吧~也很好理解
    res = df.apply(f1, axis=1)
    # 生成是Series类型的数据
    print(res, type(res))
    print('---------------------')
    # 再将生成出来的Series加在原DataFrame上
    df['Sub_sum'] = res
    print(df)
    

    最后结果输出为:

      Month  QTY
    0   Jan  271
    1   Feb  109
    2   Mar  126
    3   Apr  126
    ---------------------
    0    271
    1    380
    2    506
    3    629
    dtype: int64 <class 'pandas.core.series.Series'>
    ---------------------
      Month  QTY  Sub_sum
    0   Jan  271      271
    1   Feb  109      380
    2   Mar  126      506
    3   Apr  126      629
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题