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
Illusionary2233
V2EX  ›  Python

请教大佬们。数据处理需求,详情见下

  •  
  •   Illusionary2233 · 2023-09-06 16:26:35 +08:00 · 1024 次点击
    这是一个创建于 448 天前的主题,其中的信息可能已经有所发展或是发生改变。
    数据导出后是一个 txt 文件,该 txt 可能会包括多家机构的数据,
    举个例子来说:需求一
    数据第一行是表名,第二行是上下级的机构 ID ,总共占四列,如:上级:123456 下级:22333 第三行会有个分割线(转成 dataframe 占一列),第四行开始就是各行各列的数据,我需要提取出第二行的两个机构号并给数据(从第四行到数据的最后一行)增加两列分别表示两家机构。

    需求二:
    因为我拿到的 txt 文件可能会是多个表合在一起的结果,也就是包括不同机构,最后的效果就是一张表,然后第一行是标题,第二行开始是数据,数据中多了两列用来标明所属的两家机构

    已完成的目标,对数据进行了清洗和筛选计算,但为了完成需求遇到了不少处理困难,比如机构号的检测和提取(因为除了第一张表,其他表不知道在第几行出现),提取出来后加到对应数据的两列中,在提取时使用 df.iterrows()方法会有缺失值,但填补缺失值后处理也会有困难。

    想请问大佬们有遇到过处理放在 txt 文件中的多张表格数据然后提取信息最后转成 excel 的处理经验嘛
    目前思路有限,恳请赐教!
    4 条回复    2023-09-07 09:28:37 +08:00
    jianhuaMert
        1
    jianhuaMert  
       2023-09-06 17:38:47 +08:00
    先只读第二行获取机构 ID ,然后直接 pandas 读 txt 跳过前四行再把机构 ID 加进去不就行了。
    NoOneNoBody
        2
    NoOneNoBody  
       2023-09-06 17:47:40 +08:00
    pandas 可以用 StringIO 读入的
    你可以先把 txt 拆分存入不同的 io 对象,各自读取、合并

    当然也可以一次读入 txt ,然后找到机构所在行,处理并建 multi-index ,然后 drop 掉这些行
    Illusionary2233
        3
    Illusionary2233  
    OP
       2023-09-07 09:16:11 +08:00
    @jianhuaMert 因为一个 txt 中会有多张表,而且不同的表来自不同机构,所以解决思路是提取 txt 文件中每行的机构号加两列加到对应的数据中
    Illusionary2233
        4
    Illusionary2233  
    OP
       2023-09-07 09:28:37 +08:00
    @NoOneNoBody 好的,谢谢二位,我试一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5430 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 07:24 · PVG 15:24 · LAX 23:24 · JFK 02:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.