首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
V2EX  ›  Python

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

  •  
  •   kayseen · 90 天前 · 1712 次点击
    这是一个创建于 90 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如我有三个 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
        1
    AX5N   89 天前   ♥ 1
    你们是从哪里找的教材,为什么一定要用 pandas,我都不知道这些和 pandas 有啥联系。
        2
    greatlisten   89 天前 via Android
    DataFrame
        3
    secsilm   89 天前 via Android
    这根本上是 csv 文件,用 pandas 读进去成 dataframe 然后合并 dataframe,再导出就行了
        4
    aiver   89 天前
    用 python 直接读写三个文件合并不就好了,根本都用不上 pandas
        5
    kayseen   89 天前
    @aiver
    @AX5N
    现在学习 pandas 操作所以需要用到 pandas,而且 pandas 使用 csv 操作比 python 的 open 读写文件效率高吧,你们可能是大神,题目都不看,我要感谢你们啊
        6
    goodname   89 天前   ♥ 2
    楼主我支持你,上面回复的人太没有服务意识了,别人不谷歌来 V2 问是看的起你们,你们竟然不直接把代码写好双手奉上
        7
    ipoh   89 天前
    这种问题可以用百度或者去 CSDN 发帖,那边的人热情很多
        8
    way2create   89 天前
    题目都不看 让我想到了做试卷
        9
    zyxfsky   89 天前
    弱弱的说一句,合并这种文件,Python 都不用吧,shell 一行命令全部搞定了
        10
    kayseen   89 天前
    @goodname 早已做好被'夸'''的准备...
        11
    CEBBCAT   89 天前
    先说第一个合并的问题哈,你看这也就是三个文本文件而已,去掉表头直接追加就可以了。但要小心别搞错换行符,一般首尾加一个换行符既不会触发 bug 也稳妥多了。


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

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

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

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

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

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

    如果文件很大,再加一层 zip 比较好。
        24
    shm7   88 天前 via iPhone
    你们这些讲复制 shell io 的,人家能不懂,人家分明是几百 GB 的大文件要用分批读写,还要考虑重复过滤的好不好。人家说 1+1 的计算要用超算,很显然这 1+1 比较特殊啊
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   937 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 21:49 · PVG 05:49 · LAX 13:49 · JFK 16:49
    ♥ Do have faith in what you're doing.