如何输出第二列相同的行

文本格式如下,以“|”作为分隔符
10999201508261233197418182901054|63a96a66ba024913aa1c0d377cf95fb4||20150826|aa
10999201508261233197418182901054|63a96a66ba024913aa1c0d377cf95fb3||20150826|bb

如何输出第二列相同的行,即如果第二列的值已存在,则输出该行的值。

脚本如下:

#!/bin/bash
i=0
a[0]=""
while read line
do
   newline=`echo $line |cut -d"|" -f2`
   for(( j=0;j<=$i;j++ ))
   do
      if [ "${a[$j]}" = "$newline" ];then
          echo $line
      fi
   done
   if [ $[$i+1] -eq $j ];then
      i=$[$i+1]
      a[$i]=$newline
   fi
done < 1.txt

关键是数组的运用

要去除 Excel 中 **第一第二列相同** 的重复(即只要这两的组合重复,就只保留第一次出现的那条记录),你可以使用 `pandas` 的 `drop_duplicates()` 方法,并通过 `subset` 参数指定要判断重复的。 --- ### ✅ 示例:去除第一第二列相同的重复 以下是一个完整的 Python 脚本,读取 Excel 文件,根据**第一第二列**去重,并将结果保存到新文件中: ```python import pandas as pd # 输入输出文件路径 input_file = 'input.xlsx' output_file = 'output_unique.xlsx' # 读取Excel数据 df = pd.read_excel(input_file) # 获取名(假设你不知道名) columns = df.columns.tolist() first_col = columns[0] second_col = columns[1] # 根据前两去重,保留第一次出现的 unique_df = df.drop_duplicates(subset=[first_col, second_col]) # 保存结果 unique_df.to_excel(output_file, index=False) print(f"已根据第一 ({first_col}) 和第二列 ({second_col}) 去重,结果已保存至 {output_file}") ``` --- ### 🧠 解释说明: - `df.columns.tolist()` 可以获取所有名,方便在不知道名的情况下操作前两。 - `subset=[first_col, second_col]` 指定根据这两的组合判断是否为重复项。 - 默认情况下,`drop_duplicates()` 会保留第一个出现的记录,删除后续重复项。你也可以设置: - `keep='last'`:保留最后一次出现的。 - `keep=False`:删除所有重复项(包括首次出现)。 --- ### ✅ 示例输入: | ID | Name | Age | |------|--------|-----| | 1 | Alice | 25 | | 1 | Alice | 30 | | 2 | Bob | 28 | ### ✅ 输出(去重后): | ID | Name | Age | |------|--------|-----| | 1 | Alice | 25 | | 2 | Bob | 28 | --- ### ❗ 注意事项: - 如果你知道名(比如是 `'ID'` 和 `'Name'`),可以直接写成: ```python unique_df = df.drop_duplicates(subset=['ID', 'Name']) ``` - 如果你希望根据的位置而不是名称进判断,也可以使用如下方式(不推荐,除非名经常变化): ```python unique_df = df.drop_duplicates(subset=df.columns[[0, 1]]) ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值