首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将文本文件加载到熊猫中

如何将文本文件加载到熊猫中
EN

Stack Overflow用户
提问于 2022-03-17 16:54:42
回答 3查看 65关注 0票数 0

我有一个文本文件

样本:

交易日期:2021年11月30日上午8时42分

客户ID : C00001

客户名称: SALISU BISI

数额:16 450.00

交易参考文献:00001

交易日期:2021年11月30日上午8时46分

客户ID : C00002

客户名称: SULE YAYA

数额:80 940.00

交易参考文献:00002

交易日期:2021年11月30日上午8时51分

客户ID : C00001

客户名称: SALISU BISI

数额:44 900.00

交易参考文献:00003

我怎么把它装进熊猫里?

我试过了

df=pd.read_csv("2021_11_30.txt", delimiter="\t") df

但是它将它加载到一个列中

EN

回答 3

Stack Overflow用户

发布于 2022-03-17 17:32:33

它将作为一个列加载,因为这就是文本文件。

实际上,您要问的是如何正确地识别行并将其拆分为多个列。

你可以用一种迂回的方式对熊猫做这件事,但是对于这样的非结构化文本数据,最好是:

pandas

  • read,
  • 将格式正确的csv逐行读取到列表

中。

阅读列表将在这里讨论:How to read a file line-by-line into a list?

票数 0
EN

Stack Overflow用户

发布于 2022-03-17 17:33:51

代码语言:javascript
运行
复制
from collections import defaultdict

d = defaultdict(list)
with open(file, 'r') as rf:
     str_file = rf.read()
first_replace = str_file.replace('----------NEW TRANSACTON-----------','')
spliting_str = first_replace.split('\n\n\n')
clean_list = [tuple(r.split(':',1)) for row in spliting_str for r in row.split('\n') if r != '']
for k,v in clean_list:
    d[k].append(v)

现在,您可以将一组列表加载到dataframe中:

代码语言:javascript
运行
复制
df =pd.DataFrame.from_dict(d)
票数 0
EN

Stack Overflow用户

发布于 2022-03-17 17:50:13

没有额外的导入,替换,用较少的for和if。

代码语言:javascript
运行
复制
with open("/path/to/file.txt", "r") as f:
    l = f.readlines()
d = {}
for idx, el in enumerate(l):
    if "----------NEW TRANSACTON-----------" in el:
        for i in range(1,5):
            k, v = l[idx+i].strip().split(" : ")
            if k not in d.keys():
                d[k] = [v]
            else:
                d[k].append(v)
df = pd.DataFrame.from_dict(d)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71516219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档