【发布时间】:2018-11-28 02:03:01
【问题描述】:
假设我在一个 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]。我该如何继续?
【问题讨论】:
-
你的问题让熊猫尖叫。你有吗?
-
我也尝试过使用它。也不能对数据框做太多事情。