Loading... 先附上文件: [https://ply.lanzoui.com/ipRH4sctyle](https://ply.lanzoui.com/ipRH4sctyle "https://ply.lanzoui.com/ipRH4sctyle") ## 处理要求: model中有重复的名字,对应的year是递增的。 需要修改第一次出现的model对应的year为year最小-year最大 ### 思考方向: 一开始我是从行开始处理的,因为要求修改指定的行,其他不能修改!我tm也是第一次碰到这种变态的要求,但没想到这个方向处理起来无比困难。难点在于以下几点: 1.要保证model的名字要一致,虽然是递增的规律,如果单独处理year难免会遇到刚刚好递增的时候。 2.其他行不能删除,行遍历很难形成判定条件 3.这次实践没有任何回报! 后面,我重新做了一下思考 单纯的获取最开始重复的行索引和最后的行索引,马上就可以确定year的最小和最大值了 之后,就直接处理开始重复时的最早的索引,对指定的进行修改就行了! 难点就在于用循环获取需要修改的索引时候,要有一个对应获取最大值的一个函数。 ## 代码: 按照常规操作,我们读取这个文件 ```python df = pd.read_excel('hh.xlsx') df.head() ``` 我们将分批讲解! ```python x = df model = x['model'] make = df['make'] makex=make.copy() modelx = model.copy() year = x['year'] yearx = year.copy() m1 = modelx.drop_duplicates(keep='first') m2 = modelx.drop_duplicates(keep='last') ``` 在这里,我要说明的是,这复杂的copy是为了避免那个人的。。要求,如果没有copy操作,会打印出警告,但不影响结果。 获取了model和year,make这里是需要获取的,最后拼接用,这个获取就行。。对新手好康一点 m1和m2分别是model最开始重复的索引和最后重复的索引 ```python def min(i): ymin = yearx[i] return str(ymin) def max(i): l = [] maxl = [] for k in m1.index: l.append(k) for j in m2.index: maxl.append(j) ymax = yearx[maxl[l.index(i)]] return str(ymax) ``` 这里是获取最小的year和最大的year后面要做拼接处理! 我知道写的很low,但是写法对小白,新手来说,可读性还是可观的。 ```python for i in m1.index: yearx[i] = min(i)+"-"+max(i) r = pd.concat([makex,modelx,yearx],axis=1) r.head() print("处理完成") ``` 因为只需要修改最小的重复时候的行的year值,我们对m1进行遍历,通过min和max获取了最大和最小值 进行修改,之后拼接,完成了处理。 保存: ```python r.to_csv('87.csv') print("处理完成") ``` ## 我想说: 这个提出该要求的人我也不知道脑子咋想的,为啥不去直接删去重复的内容,合并最小-最大呢? 所以我在这里放出了代码。。。。 max和min还是用的到的 ```python import pandas as pd df = pd.read_excel('hh.xlsx') df.head() import pandas as pd df = pd.read_excel('hh.xlsx') model = df['model'] make = df['make'] year = df['year'] yearx = year.copy() m1 = model.drop_duplicates(keep='first') m2 = model.drop_duplicates(keep='last') make = make.drop_duplicates(keep = 'first') yearlist = [] for i in m1.index: yearlist.append(min(i)+"-"+max(i)) yearlist = pd.DataFrame(yearlist) r = pd.concat([m1.reset_index()['model'],yearlist],axis=1) r.to_csv('87.csv') print("处理完成") ``` Last modification:February 5, 2022 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 如果觉得我的内容对你有用,请随意赞赏