python - 打开具有多个空格的文件并保存为具有两个变量的数组/数据框

标签 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'] 的形式访问列。

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

Code      Name
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 

我现在的代码:

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

但是这是错误的,因为 data 中的每一行都是一堆字符串,而不是两个字符串。我应该如何将此文件作为两个变量打开?

最佳答案

data=Code + " " + Name

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

您可以声明一个空列表,并在迭代文件时将其追加到该列表中。

mydata = []
with open('filename.txt', 'r') as myfile:
    for line in myfile:
        # remember to remove trailing newline characters.
        code, name = line.strip('\n').split(' ', 1)
        mydata.append((code, name))

然后生成的列表 mydata 将包含,每行两列。 (它是一个二元素元组列表)

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

mydata.append((code, name))

mydata.append((int(code), name))

最后,要将数据读入数据帧,您只需将 mydata 传递为

mydata_df = pandas.DataFrame(mydata)

进入数据框后,您可以更改列名称以适合您的用途。

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

然后,您将能够通过列名称访问各个列,例如mydata_df['Code']mydata_df.Code

关于python - 打开具有多个空格的文件并保存为具有两个变量的数组/数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28775211/

相关文章:

python - 在终端中执行带有多个参数的python函数

python - 根据具有条件的其他列的值在 pandas 中添加列

python - Scikit-learn 的 LabelBinarizer 与 OneHotEncoder

python - 在 Django 中翻译电子邮件模板

python - 转推时 Tweepy 未经授权的 401 错误

python - 获取触发事件的小部件?

python - 使 PyQt QRadiobutton 跨多个布局独占

python - 在哪里/如何替换 Django CBV 中的默认上传处理程序?

python - 列表评估为 bool 值但作为列表返回

python - 如何将 UTF-8 "From:"地址添加到邮件中?