gpt4 book ai didi

Python 根据第一列中的键合并两列

转载 作者:太空宇宙 更新时间:2023-11-03 15:44:23 26 4
gpt4 key购买 nike

假设我在 excel 文件中有两列,如下所示:

1 1
1 2
2 3
3 4
4 5
5 6
1 3

我这里的目标是实现两列之间的映射。如果第一列中的值在多行中相同,则将相应的值添加到第二列中。所以我的输出应该是这样的:[1:6, 2:3, 3:4, 4:5, 5:6]

逻辑:数字“1”出现在 3 行中,对应的值为 1,2 和 3。因此,键 1 的总值变为 1+2+3=6。

我从一种方法开始,并走到了尽头:

import xlrd
book = xlrd.open_workbook('C:\\Users\\a593977\\Desktop\\ExcelTest.xlsx')
sheet = book.sheet_by_name('Sheet1')
data = [[sheet.cell_value(c, r) for c in range(sheet.nrows)] for r in range(sheet.ncols)]
firstColumn=data[0]
firstColumn=sorted(firstColumn)
secondColumn=data[1]
secondColumn=sorted(secondColumn)
print(list(zip(firstColumn,secondColumn)))

这段代码的输出是:

[(1.0, 1.0), (1.0, 2.0), (1.0, 3.0), (2.0, 3.0), (3.0, 4.0), (4.0, 5.0), (5.0, 6.0)]

但目标是:[1:6, 2:3, 3:4, 4:5, 5:6]。我该如何继续?

最佳答案

使用 Pandas 。尝试 groupbysumagg

import pandas as pd

df = pd.read_excel('C:\\Users\\a593977\\Desktop\\ExcelTest.xlsx', header=None)
res = (df
.groupby(df.columns[0], as_index=False, sort=False)[df.columns[1]]
.sum()
.astype(str)
.agg(':'.join, 1)
.tolist()
)

print(res)
['1:6', '2:3', '3:4', '4:5', '5:6']

关于Python 根据第一列中的键合并两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50922779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com