有个处理 csv 的问题,想了好几个晚上,都没有办法解决,请教各位

2018-05-10 06:27:54 +08:00
 kavana

有个超过 256 列的 csv 表,大概在 800 多列,10w 行 另外有一张表,要匹配上面这个表中的部分字段,然后找出关键字对应的值,类似于 vlookup 这种功能 现在的情况是,通过 vlookup 也能找,但是花费的时间比较长,放到数据库里,光导入的时间就不是一点半点的 请教一下大家有没有什么好的办法?

5441 次点击
所在节点    Python
36 条回复
super452
2018-05-10 10:05:23 +08:00
pandas 了解一下?
ourzhang
2018-05-10 10:38:11 +08:00
外部表。。。
kavana
2018-05-10 11:42:02 +08:00
@mengzx 谢谢啦
caryqy
2018-05-10 14:20:22 +08:00
awk + grep 呢
thedrwu
2018-05-10 16:05:11 +08:00
10w 行的表,awk 如果写得高效,跑起来飞快。
还能多进程并行!
在几十个核心的服务器上跑个几秒就解决了。
Hopetree
2018-05-10 16:18:54 +08:00
数据的东西交给 pandas
a132811
2018-05-10 16:47:47 +08:00
才 10w 行,800 列,也没有多少数据嘛。
简单的匹配 grep, awk。复杂点的匹配,就 python 等处理,很方便的啊。

刚 python3 写了一个, 10 多行的事情:
wget https://ahui132.github.io/bin/grepcolumn
chmod u+x grepcolumn


echo 'name=Jack,gender=male,job=coder' | grepcolumn - 'job,name'

echo 'Jack,male,coder' | grepcolumn - 'job,name' -c 'name,gender,job'

echo 'Jack||male||coder' | grepcolumn - 'job,name' -c 'name,gender,job' -d '||'
annielong
2018-05-10 16:57:39 +08:00
看字段内容吧,如果是一般的字段,还是导入数据库方便,我曾处理过一次复杂文本的 csv,字段用逗号隔开,但是某个字段是富文本,里面一大堆换行 和逗号,不知道为什么用 Excel 引擎导入只能处理一部分,最后还是写个软件 处理后批量插入数据库
a132811
2018-05-10 17:15:05 +08:00
csv 的话 pands 最方便:

dataFrame = pandas.read_csv("./marks.csv", sep=",")
dataFrame = pandas.read_table("./marks.csv", sep=",")
zynlp
2018-05-10 17:21:37 +08:00
spss 了解一下?
zhangsen1992
2018-05-10 17:48:02 +08:00
数据库操作
Hzzone
2018-05-10 17:51:28 +08:00
像是中软杯(滑稽)
qianc1990
2018-05-10 18:12:18 +08:00
10W 多行不算大,pandas 就可以处理
lance7in
2018-05-11 17:02:12 +08:00
@thedrwu 这么好的工具为啥大伙都不用
guyskk0x0
2018-05-11 23:59:05 +08:00
试试 apache drill,先把 csv 里需要的字段抽出来
xiaohanqing
2018-05-12 09:55:47 +08:00
MySQL,loadCSV,6 百万行也是几分钟的事

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/453628

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX