我有一份世界上每个城市的大量清单,我试图按国家划分。手动实现这一点非常繁琐,因此相信有更好的方法来实现这一目标。这让我想到了以下问题。
基于一列中的类似值将CSV文件拆分为较小的CSV文件的最简单/最佳方法是什么?
我已经看到这个问题以一些不同的方式回答,假设有人询问有C ++的经验,我不这样做。我对Java有基本的了解,对Linux有更多的经验,对Windows和Microsoft Office有更多的经验。
任何正确方向的推动都是有帮助的。
感谢您花时间阅读这篇文章。任何和所有的帮助表示赞赏。
显然有很多不同的方法可以实现这一点 - 如果你在Windows上,this snippet为PowerShell提供了一个很好的单行程,可以根据列中的值拆分csv文件:
Import-Csv file.csv | Group-Object -Property "department" |
Foreach-Object {$path=$_.name+".csv" ; $_.group |
Export-Csv -Path $path -NoTypeInformation}
将file.csv
替换为csv文件,将"department"
替换为要拆分文件的列标题。它将根据所选列中的每个唯一值编写一个新的csv。
如果您从未使用过Powershell,那么here就是一个不错的介绍。
当你手动操作时,我假设你不一定需要代码来实现这一点。我对Powershell不熟悉,所以无法评论chrisb的答案。如果你可以使它工作,它看起来比我的解决方案更简单,但万一你不能,那么你可以尝试以下:
如果你想进一步自动化,那么你可能需要进行一些编码。
在Linux或macOS上,您可以使用awk
(其中2是要拆分的列索引):
awk -F ',' '{print > ("cities-in-"$2".csv")}' cities.csv
cities.csv:
1,london,uk
2,paris,france
3,bristol,uk
4,lyon,france
城市功能于uk.csv:
1,london,uk
3,bristol,uk
城市数据paris.csv:
2,paris,france
4,lyon,france