1
krixaar 2020-12-25 11:38:08 +08:00 1
这种小事不用 Python,Excel 里新建一辅助列,内容是如果 date2 为空则为 date1 否则 date2 (=if(isblank 或者 len=0 自己按需挑, C2, D2)),date3 降序,数据--删除重复值--A 列,确定,删掉辅助列。
删除重复值会保留最上面的行,所以降序排列后剩下的就是最新行。 非得用 Python 或者 SQL 思路同上。 |
2
lpts007 2020-12-25 11:41:16 +08:00 1
sort by date2, date1
drop keep=last |
6
factoid 2020-12-25 12:49:24 +08:00 via iPhone
@kevinfk2 他的意思是先按照 date2,date1 排序,有个 df.sortxxxxx 啥的函数,然后 drop_duplicates([‘name’],keep=last)
|
7
wysnylc 2020-12-25 14:22:23 +08:00
你以为 python 能有多高性能啊,都是单线程谁也别瞧不起谁
我站 excel |
8
TEwrc 2020-12-25 15:31:23 +08:00 1
写了半天好像对了:
import csv from itertools import tee, takewhile, islice result = [] with open('test.csv', 'r') as f: info1, info2, info3 = tee(islice(csv.reader(f), 1, None), 3) sorted_by_date1 = sorted(info1, key=lambda x: x[2], reverse=True) sorted_by_date2 = takewhile(lambda x: x[3], sorted(info2, key=lambda x: x[3], reverse=True)) for j in sorted_by_date2: if j[0] not in [i[0] for i in result]: result.append(j) for k in sorted_by_date1: if k[0] not in [i[0] for i in result]: result.append(k) print(result) |