我有一个很大的CSV文件,其中有些单元格中有多个值。如何更改这些单元格,使它们只包含最小值?
例如,考虑到这种输入:
id,disease_1,disease_2
1001,2008;2009,2009;2010 备注
,;分隔,并按升序排序。期望产出:
id,disease_1,disease_2
1001,2008,2009发布于 2023-03-27 15:18:45
如果这是一个简单的CSV:
$ perl -MList::Util=min -F, -le 'print join ",", shift@F, map {min split /;/} @F' file.csv
id,disease_1,disease_2
1001,2008,2009发布于 2023-03-27 13:28:32
正如您说的,您更喜欢Python和SQL:
编写一个Python脚本,它:
sqlite3模块创建SQLite数据库,使用CSV的第一行定义列(可能都是INTEGER类型?)min( int(value) for values in splitted )或类似的1. write the complete row list to the sqlite3 databse file现在,将您的数据放在SQLite数据库文件中,您可以对它运行SQL查询--这比处理CSV数据要好得多。此外,您也会很高兴看到更快的事情,比如在数据库中查找东西。CSV是一种“最坏情况”的数据库格式:您需要始终读取所有先前的行才能找到第N行;始终需要读取所有以前的列才能找到Mth列。
https://unix.stackexchange.com/questions/741102
复制相似问题