用多个空格打开文件,并用两个变量另存为数组/数据帧

2024-09-28 19:26:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个表格的文本文件:

data=
11  Open Water
12  Perennial Ice/Snow
21  Developed, Open Space   
22  Developed, Low Intensity    
23  Developed, Medium Intensity
112 Developed, High Intensity
113 Barren Land
0   No data

我想读取文件并将其保存为数组或数据帧(列名=Code,Name),并且能够以data['Code']或data['Name']的形式访问列。在

打印(数据)命令将生成:

^{pr2}$

我的代码:

myfile = open("filename.txt",'r')
for line in myfile:
    Code, Name = line.split(' ', 1)
    data=Code + " " + Name
    print(data)

但这是错误的,因为数据中的每一行都是一组字符串,而不是两个字符串。我应该如何以两个变量的形式打开这个文件?在


Tags: 文件数据字符串namedatalinecodeopen
3条回答

如果代码是唯一的,您可以构建一个字典,其中代码是键,字符串是值:

数据.txt

11  Open Water
12  Perennial Ice/Snow
21  Developed, Open Space   
22  Developed, Low Intensity    
23  Developed, Medium Intensity
112 Developed, High Intensity
113 Barren Land
0   No data

代码(Python2.7)

^{pr2}$
data=Code + " " + Name

上面的行将两个变量CodeName的内容合并到一个字符串变量中。在

您可以声明一个空列表,并在遍历该文件时将其附加到该列表中。在

^{pr2}$

然后得到的列表mydata将包含,每行两列。(它是两个元素元组的列表)

每行的第一列是code,第二列是name。但是,在这个阶段,code仍然是一个字符串。要将其转换为int(我假设您希望这样做),请替换

mydata.append((code, name))

^{4}$

最后,要将数据读入数据帧,只需将mydata作为

mydata_df = pandas.DataFrame(mydata)

一旦进入数据框,就可以更改列名以适合您的用途。在

mydata_df.columns = ['Code', 'Name']

然后,您将能够通过列名访问各个列,例如mydata_df['Code']或{}。在

看起来您正在处理一个固定宽度的文件,而且您似乎希望根据引用数据的语法使用pandas。开始吧。在

第一部分获取文本文件中的长度(行数),并创建一个包含两列(代码、名称)和文本文件长度的数据帧。在

第二部分遍历每一行,并将前4个字符分配给第一列“Code”,最后几个字符(新行字符除外)分配给第二列“Name”。在

import pandas as pd
import numpy as np

path = "path to your file"
length = len(open(path).readlines())
df = pd.DataFrame(columns = ['Code','Name'], index = np.arange(length))


sample = open(path)
lines = sample.readlines()
for i, j in enumerate(lines):
    df.loc[i,'Code'] = j[0:3]
    df.loc[i,'Name'] = j[4:].replace("\n", "")
print df
print df['Code']
print df['Name']

相关问题 更多 >