楼主: polaris05
811 1

[问答] 请教一个python代码的编写问题,谢谢!! [推广有奖]

  • 0关注
  • 0粉丝

本科生

17%

还不是VIP/贵宾

-

威望
0
论坛币
271 个
通用积分
0.0322
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
448 点
帖子
28
精华
0
在线时间
101 小时
注册时间
2015-5-5
最后登录
2023-2-22

楼主
polaris05 发表于 2019-10-17 15:15:08 |AI写论文
100论坛币
id    a       b                c                d        

1     2       5          20190810    20190930              
1     6       6          20190810    20190930
1     7       10        20190821    20180930   
1     9       20        20191011    20190930   

2     2        5         20190810    20190820               
2     6        6         20190810    20190820  
2     7       10        20190821     20180820   
2     9       20         20191011    20190820   




请教大神一个问题,id那一列是人,一个人对应一个id,a和b列对应的是数字,c,d列对应的是日期,d列的每个ID对应的日期都是一样的
现在要求计算每个人,也就是每个id对应的,c列日期小于d列日期时a列对应的值的总和,和b列对应的值的总和,并用b的总和减去a列总和

比如id是1的,计算就是(5+6+10)-(2+6+7),id是2的计算就是(5+6)-(2+6)





最佳答案

和蔼的昂昂昂 查看完整内容

def ab(df): middle = df[df['c']
关键词:python

沙发
和蔼的昂昂昂 发表于 2019-10-17 15:15:09
def ab(df):
    middle = df[df['c']<df['d']]
    return middle['b'].sum() - middle['a'].sum()

result = df.groupby('id').apply(ab)
print(result)

其中df为你的原始数据文件(DataFrame格式),groupby根据id分组,之后每一个分组调用函数ab即可
另:你的原始数据中d列第三个数为20180930,与计算结果不符合,如果按照原始数据计算,结果应为3,3
已有 2 人评分经验 论坛币 收起 理由
cheetahfly + 100 热心帮助其他会员
yunnandlg + 100 + 20 这个回答非常棒

总评分: 经验 + 200  论坛币 + 20   查看全部评分

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 08:32