首页 > 解决方案 > 如何在没有熊猫的情况下删除重复项?

问题描述

这是数据

row1| sbkjd nsdnak ABC 
row2| vknfe edcmmi ABC
row3| fjnfn msmsle XYZ
row4| sdkmm tuiepd XYZ
row5| adjck rulsdl LMN

我已经尝试过使用pandas并从stackoverflow获得帮助。但是,我希望能够删除重复项,而无需使用该pandas库或任何一般的库。因此,必须选择只有一个具有“ABC”的行,只有一个具有“XYZ”的行必须选择,并且最后一行是唯一的,所以应该选择它。我该怎么做呢?因此,我的最终输出应包含以下内容:

[第1行第2行+第3行第4行+第5行]

标签: python

解决方案


这个 Bash 命令可以(假设您的数据位于名为 的文件中test,并且第 4 列的值不会出现在其他列中)

cut -d ' ' -f 4 test | tr '\n' ' ' | sed 's/\([a-zA-Z][a-zA-Z]*[ ]\)\1/\1/g' | tr ' ' '\n' | while read str; do grep -m 1 $str test; done

cut -d ' ' -f 4 test选择第四列中的数据
tr '\n' ' '将列转换为行(将换行符转换为空格)
sed 's/\([a-zA-Z][a-zA-Z]*[ ]\)\1/\1/g'删除重复
tr ' ' '\n'项将唯一值行转换为列
while read str; do grep -m 1 $str test; done读取唯一单词并打印test与该单词匹配的第一行


推荐阅读