对第二列求和,但是重复的要把数据放到第一次重复的地方,其他的空着。
整体思路是计数,之后建立一个列表储存列信息,之后相乘。
"""
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替换为空值,(总感觉有更好的办法,不知道各位大神怎么看)