我有一个文本文件
样本:
交易日期: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
但是它将它加载到一个列中
发布于 2022-03-17 17:32:33
它将作为一个列加载,因为这就是文本文件。
实际上,您要问的是如何正确地识别行并将其拆分为多个列。
你可以用一种迂回的方式对熊猫做这件事,但是对于这样的非结构化文本数据,最好是:
pandas
中。
阅读列表将在这里讨论:How to read a file line-by-line into a list?
发布于 2022-03-17 17:33:51
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中:
df =pd.DataFrame.from_dict(d)发布于 2022-03-17 17:50:13
没有额外的导入,替换,用较少的for和if。
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)https://stackoverflow.com/questions/71516219
复制相似问题