CSV 过滤具有混合数据类型的列

数字用户线

我有一个包含许多列和行的 CSV。第 4 列有一些字符串,有些没有。当我尝试过滤掉重复项时,它会删除我想保留的那些。

当我运行时:

awk -F ',' '!seen[$4]++' oldfile.csv > newfile.csv

71523180,PRASAD  JAMES ANAND, ,#3 ALEX BOYD LINK HILLSBORO
71523190,PRASAD  SHAKUNPALA, ,#3 ALEX BOYD LINK HILLSBORO
71523200,PRASAD  BOBBY UMENDRA, ,#3 ALEX BOYD LINK HILLSBORO

它返回我想要的:

71523180,PRASAD  JAMES ANAND, ,#3 ALEX BOYD LINK HILLSBORO

但是,当我运行那行代码时

71508050,"HUNT,  RICHARD F", ,1009 # B FATHOM DR
71508060,"HUNT,  RICHARD F", ,1009 # B FATHOM DR
71561950,"HUNT,  RICHARD F", ,1009 # B FATHOM DR
71562840,"HUNT,  RICHARD F", ,1009 # B FATHOM DR

它会删除所有这些条目。

该怎么办?谢谢


跟进

使用 perl 似乎有效,但给了我一个小错误。这是一个问题吗?

$ perl -w -MText::CSV_XS=csv -e 'csv(in => \*STDIN, filter => { 4 => sub { !$seen{$_}++ }})' <combined4.csv > combine6.csv
名称“main::seen”仅使用一次:-e 第 1 行可能出现错别字。
肖恩

如果您的 CSV 数据不重要,在引用字段中包含逗号awk之类的内容,那么与尝试在其上使用或类似内容相比,了解格式的工具是更好的选择

使用Text::CSV_XS模块的perl one-liner 示例(通过您的操作系统包管理器或最喜欢的 CPAN 客户端安装):

$ perl -MText::CSV_XS=csv -e 'csv(in => \*STDIN, filter => { 4 => sub { ! $seen{$_}++ }})' < input.csv
71508050,"HUNT,  RICHARD F"," ","1009 # B FATHOM DR"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有混合数据类型的列的 groupby 数据

具有混合数据类型的列表的Numpy dtype

从数组创建具有混合数据类型的表

删除具有混合数据类型的值

Power-Query中具有混合数据类型的“自定义”列

删除pandas数据框中具有混合数据类型的所有行,这些数据类型包含多列中的特定字符串

在R中:具有混合数据类型的数据帧的类型转换

通过混合数据类型过滤DataFrame

如何对具有混合数据类型和数据结构的列表进行子集设置?

具有混合数据类型的TensorFlow数据集生成器

在python中将具有不同数据类型的pandas数据框导出到csv

尝试从对象数据类型为csv的csv中导入所有列

C#中具有混合数据类型的数组

转换具有单个混合数据类型数组的单个字符串

在Swagger中定义具有混合数据类型的属性

使用Boost.Spirit解析具有混合数据类型的OBJ文件?

读取Java中具有可变数据类型的CSV

在Graph实验室中导入具有特定数据类型的CSV

在熊猫列中组合混合数据类型

将具有混合数据类型的数据帧中所有出现的True / False转换为1/0

Python-如何获取CSV文件中所有列的数据类型?

从只有标题的 CSV 文件中设置列的数据类型

处理混合数据类型

java - 如何解决由具有混合数据类型的数据文件引起的 InputMismatchException

转换csv文件中列的数据类型

读入CSV,从字典中获取列数据类型

如何更改csv列中的数据类型

在python中读取具有混合数据类型的未知大小的二进制文件

从具有嵌套结构的字典中删除混合数据类型的空值和空对象