导入具有不同结构的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问题的主要内容,如果未能解决你的问题,请参考以下文章