导入具有不同结构的txt文件的Python问题

Posted

技术标签:

【中文标题】导入具有不同结构的txt文件的Python问题【英文标题】:Python problems with importing txt files with different structure 【发布时间】:2021-05-03 12:50:22 【问题描述】:

我是 python 编程的新手,在导入逗号分隔的 txt 文件时遇到问题。

txt文件的当前布局如下:

1,2,3

,4,5,6,7

,8,9,10,11

1,2,3

,4,5,6,7

,8,9,10,11

等等等等

我想将其导入并加载为具有以下结构的 pandas 数据框:

标题

1,2,3,4,5,6,7,8,9,10,11

1,2,3,4,5,6,7,8,9,10,11

我已经尝试了很多,但我就是不知道用谷歌搜索什么。

【问题讨论】:

您能否更具体地说明 1) 存储输入的标准。 2)熊猫数据结构应该是什么格式? 【参考方案1】:

我是这样设计的

import pandas as pd

with open("text.txt") as file:
    file = file.read()
data = file.split("\n")
data = [i for i in data if i != ""]
x = ["\n".format(*data) for i in range(len(data)//3)]
x = "".join(x)
with open('text2.txt', 'w') as f:
    f.write("".join(x)+"\n")

df = pd.read_csv("text2.txt", header=None)
print(df)

出来:

   0   1   2   3   4   5   6   7   8   9   10
0   1   2   3   4   5   6   7   8   9  10  11
1   1   2   3   4   5   6   7   8   9  10  11
>>> 

【讨论】:

【参考方案2】:

数字的空格分隔输入被视为 -

lst = list(map(int, input().split())

使用默认索引从列表中创建熊猫系列 -

srs = pd.Series(lst)

从一个系列中创建一个 pandas 数据框 -

df = pd.DataFrame(srs)

(我会根据你想要的内容来编辑这篇文章,因为当时还不清楚。)

【讨论】:

我不知何故找到了解决方案,我将其添加为答案,但感谢您的帮助!【参考方案3】:

我从描述中了解到: 您必须从文件中加载文本,并根据行的前导逗号,将它们连接成一行,然后将其作为数据框加载。

您可以从文件中加载数据并根据前导 , 将行连接成行

with open("file.txt","r") as f:                                                                                   
    data=f.read()
data = data.replace("\n,",",")

接下来,您可以将字符串加载为数据框

import io import StringIO

data = StringIO(data)
df = pd.read_csv(data, sep=",")

附: : 如果没有columns 参数,第一行将被视为列名

【讨论】:

【参考方案4】:

不知何故突然很快找到答案,感谢您的帮助!

data = [i.strip('\n') for i in open('filename.txt')]
new_data = [' ,'.join(data[i:i+3]) for i in range(0, len(data), 3)]
f = open('filename.txt', 'w')
for i in new_data:
   f.write("\n".format(i))
f.close()

df = pd.read_csv("filename.txt",header=None)

【讨论】:

以上是关于导入具有不同结构的txt文件的Python问题的主要内容,如果未能解决你的问题,请参考以下文章

导入在具有多个目录的python中不起作用

从不同目录导入文件

如何优雅地将dat,txt 或者excel 文件导入python

Python 导入模块、文件夹结构

Python函数导入在Django中不起作用

python模块以及导入出现ImportError: No module named ‘xxx‘问题