Loading... 不得不说,链表那玩意。。。。真的是又臭又长。。。 让我们看看用pandas会怎么样处理这种问题吧! <div class="tip inlineBlock info simple small"> 这是untitled.txt文件的内容 ``` 20010145,44 20010145,41 20010147,20 20010147,33 20010189,45 20010189,45 200101?9,30 200101?9,8 ``` </div> ### 第一小步,读取,筛选不包含?的信息 ```python import pandas as pd df=pd.read_csv('untitled.txt',header=None) #读取数据,header=None使得第一行不会作为列名而是作为数据 df.columns=['学籍号','成绩'] #为了好看加的一行 df=df[df['学籍号'].str.contains("\?")==False] #series.str被称之为字符串向量化操作,contains就是字面意思包含\?前面的\是转义符号,跟正则有关系 #细节哥应该注意到了选必一应该有提到吧 ``` ![df数据一览](http://img1.runcloud.ml/2022/10/22/5afa60ea797c6.png) ```python df2=df.groupby('学籍号',as_index=False).apply(lambda x:pd.Series([x.iloc[0][1],x.iloc[1][1]])) df2 ``` 我们采用最常用的groupby和apply组合,先分组(因为已知两两一组了) 之后使用iloc[0]和iloc[1]快速对应信息和通技的那一行 后面在来个[1]就是只取数字那玩意了,之后转成series生成 ![df2输出效果](http://img1.runcloud.ml/2022/10/22/b4aa4e410065e.png) ```python df2.columns=['学籍号','信息成绩','通用成绩'] df2 ``` ![最终效果](http://img1.runcloud.ml/2022/10/22/def77f9fb810d.png) Last modification:October 22, 2022 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 1 如果觉得我的内容对你有用,请随意赞赏