V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
kayseen
V2EX  ›  Python

使用 pandas 合并多个 txt 文件里的字段的方法

  •  
  •   kayseen · 2019-09-12 00:26:18 +08:00 · 4754 次点击
    这是一个创建于 1934 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如我有三个 txt 文件,
    a.txt 和 b.txt 和 c.txt
    
    其内容字段一致,内容如下:
    time,tmp,water,light
    2019-09-03 03:23:09,28,28,8
    2019-09-03 03:23:10,29,29,9
    2019-09-03 03:23:11,30,30,10
    2019-09-03 03:23:12,31,31,11
    2019-09-03 03:23:13,32,32,12
    

    我现在需要合并这三个文件的数据到一起,也就是把 b.txt 和 c.txt 的文件追加到 a.txt 中去, 请教问题如下:

    1.怎么样把三个文件的内容合并成一个新文件呢?
    2.如果前端需要的是我合并这三个文件之后的内容,我还需要先合并数据成一个文件,然后再读数据返回给前端吗?
    还是直接可以把合并之后的数据不保存直接返回给前端?
    
    24 条回复    2019-09-13 09:16:22 +08:00
    AX5N
        1
    AX5N  
       2019-09-12 05:53:51 +08:00   ❤️ 1
    你们是从哪里找的教材,为什么一定要用 pandas,我都不知道这些和 pandas 有啥联系。
    greatlisten
        2
    greatlisten  
       2019-09-12 06:50:24 +08:00 via Android
    DataFrame
    secsilm
        3
    secsilm  
       2019-09-12 08:40:47 +08:00 via Android
    这根本上是 csv 文件,用 pandas 读进去成 dataframe 然后合并 dataframe,再导出就行了
    aiver
        4
    aiver  
       2019-09-12 08:50:21 +08:00
    用 python 直接读写三个文件合并不就好了,根本都用不上 pandas
    kayseen
        5
    kayseen  
    OP
       2019-09-12 09:10:50 +08:00
    @aiver
    @AX5N
    现在学习 pandas 操作所以需要用到 pandas,而且 pandas 使用 csv 操作比 python 的 open 读写文件效率高吧,你们可能是大神,题目都不看,我要感谢你们啊
    goodname
        6
    goodname  
       2019-09-12 09:17:03 +08:00   ❤️ 2
    楼主我支持你,上面回复的人太没有服务意识了,别人不谷歌来 V2 问是看的起你们,你们竟然不直接把代码写好双手奉上
    ipoh
        7
    ipoh  
       2019-09-12 09:30:26 +08:00
    这种问题可以用百度或者去 CSDN 发帖,那边的人热情很多
    way2create
        8
    way2create  
       2019-09-12 09:33:43 +08:00
    题目都不看 让我想到了做试卷
    zyxfsky
        9
    zyxfsky  
       2019-09-12 09:37:48 +08:00
    弱弱的说一句,合并这种文件,Python 都不用吧,shell 一行命令全部搞定了
    kayseen
        10
    kayseen  
    OP
       2019-09-12 09:37:51 +08:00
    @goodname 早已做好被'夸'''的准备...
    CEBBCAT
        11
    CEBBCAT  
       2019-09-12 09:53:06 +08:00
    先说第一个合并的问题哈,你看这也就是三个文本文件而已,去掉表头直接追加就可以了。但要小心别搞错换行符,一般首尾加一个换行符既不会触发 bug 也稳妥多了。


    第二个,你看我这两天正在学 Go,GoPL 中就提到一个 Gif 直接返回给 HTTP 输出流的例子,而且 respones 头也是正确的,有点跑题了,我想说的是那个例子里生成了 Gif 就直接把 Gif 写到 io 里了,没有保存。

    楼主不能接受楼上的建议可能还是对于文件结构、存储结构、IO 工作原理不熟悉,我也不是啥啥都懂,自学到现在(大四),恰巧碰到明白的点而已。

    我该说的说完了,现在问点我想知道的:楼主是不是转行培训了一下然后赶鸭子上架就职的?
    CEBBCAT
        12
    CEBBCAT  
       2019-09-12 09:54:33 +08:00   ❤️ 3
    另外楼主「而且 pandas 使用 csv 操作比 python 的 open 读写文件效率高吧」非常有节目效果,点个赞哈哈哈哈😂
    kayseen
        13
    kayseen  
    OP
       2019-09-12 10:10:18 +08:00
    @CEBBCAT 谢谢哈,现在还在学校,临时分配数据处理的东西...
    Vegetable
        14
    Vegetable  
       2019-09-12 10:17:13 +08:00
    cat b.txt c.txt|grep -v time >> a.txt
    DMW
        15
    DMW  
       2019-09-12 10:19:41 +08:00
    建议用 Shell 命令,更加简单快捷
    kayseen
        16
    kayseen  
    OP
       2019-09-12 10:20:34 +08:00
    @Vegetable
    @DMW
    谢谢~
    silentstorm
        17
    silentstorm  
       2019-09-12 10:30:21 +08:00 via Android
    windows 下 copy /b 就能解决
    idcspy
        18
    idcspy  
       2019-09-12 10:50:33 +08:00
    借楼问个相关基础问题,如果有个每日更新的 11m 左右 txt 文件,大部分内容相同,是个网站排名数据,要把他的排名变化展现出来用什么做好点,谢谢。
    kayseen
        19
    kayseen  
    OP
       2019-09-12 11:05:29 +08:00   ❤️ 1
    @idcspy
    问一下,是把固定天数(比如三天或者四天的)排名变化展示吗?
    或者说是动态展示(比如某一时刻的固定天数的变化图),
    如果是做网站前后端分离把数据给到前端,前端来绘图吧,
    如果是后端绘图的话, 刚接触了一点 matplotlib,不知道行不行,
    看楼下解答...
    shenxgan
        20
    shenxgan  
       2019-09-12 11:21:57 +08:00   ❤️ 1
    XuanFei990
        21
    XuanFei990  
       2019-09-12 11:52:41 +08:00
    windows cmd

    copy a.txt + b.txt + c.txt temp.txt
    bantao
        22
    bantao  
       2019-09-12 17:12:06 +08:00
    @idcspy 这个需求可以用 pandas join 完然后比较排名上升还是下降几位喽
    abucus
        23
    abucus  
       2019-09-12 22:46:23 +08:00
    楼主,在合并 txt 这个方面,用 pandas concat 并不会比 python open 更快,当然在小文件的时候这个差别其实看不大出来,文件越大差距越明显,pandas 的优势主要还是数据分析。

    用 open 顺序打开读取(跳过后面文件的 header )就可以了。

    如果要把合并的结果返回给前端,不需要真正生成一个合并的文件,直接把 output 写到输出流就好,
    一个相近的例子参看 https://flask.palletsprojects.com/en/1.1.x/patterns/streaming/

    如果文件很大,再加一层 zip 比较好。
    shm7
        24
    shm7  
       2019-09-13 09:16:22 +08:00 via iPhone
    你们这些讲复制 shell io 的,人家能不懂,人家分明是几百 GB 的大文件要用分批读写,还要考虑重复过滤的好不好。人家说 1+1 的计算要用超算,很显然这 1+1 比较特殊啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   964 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 79ms · UTC 22:02 · PVG 06:02 · LAX 14:02 · JFK 17:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.