python对有重复值的列求和之后放到第一次出现的位置

在这里插入图片描述
对第二列求和,但是重复的要把数据放到第一次重复的地方,其他的空着。
整体思路是计数,之后建立一个列表储存列信息,之后相乘。

"""
author: shuaijie
intro: 分类求和
date: 07/22/2020 19:17
"""
import pandas as pd


def main():
    data = pd.read_excel(r'C:\Users\13290\Desktop\施肥量.xlsx')
    sum_data = data.groupby(by='姓名', sort=False).sum()
    number = data['姓名'].value_counts()
    sum_data['number'] = number
    df = pd.merge(data, sum_data, on='姓名')

    # print(sum_data)
    l = []
    for i in sum_data['number']:  # 最多7个重复的,可以自己再追加
        if i == 1:
            l.append(1)
        if i == 2:
            l.append(1)
            l.append(0)
        if i == 3:
            l.append(1)
            l.append(0)
            l.append(0)
        if i == 4:
            l.append(1)
            l.append(0)
            l.append(0)
            l.append(0)
        if i == 5:
            l.append(1)
            l.append(0)
            l.append(0)
            l.append(0)
            l.append(0)
        if i == 6:
            l.append(1)
            l.append(0)
            l.append(0)
            l.append(0)
            l.append(0)
            l.append(0)
        if i == 7:
            l.append(1)
            l.append(0)
            l.append(0)
            l.append(0)
            l.append(0)
            l.append(0)
            l.append(0)
    df['mark'] = l
    df['result'] = df['mark'] * df['施肥_y']
    final = df[['姓名', '施肥_x', 'result']]
    final.to_excel(r'C:\Users\13290\Desktop\施肥量2.xlsx', index=False)


if __name__ == '__main__':
    main()

之后得到表格,把0替换为空值,(总感觉有更好的办法,不知道各位大神怎么看)
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值