使用熊猫从txt加载数据


159

我正在加载一个包含浮点和字符串数据混合的txt文件。我想将它们存储在可以访问每个元素的数组中。现在我正在做

import pandas as pd

data = pd.read_csv('output_list.txt', header = None)
print data

这是输入文件的结构:1 0 2000.0 70.2836942112 1347.28369421 /file_address.txt

现在,数据将作为唯一列导入。我如何划分它,以便分别存储不同的元素(所以我可以调用data[i,j])?以及如何定义标题?

Answers:


217

您可以使用:

data = pd.read_csv('output_list.txt', sep=" ", header=None)
data.columns = ["a", "b", "c", "etc."]

添加sep=" "您的代码,在引号之间留一个空格。因此,熊猫可以检测值之间的空格并按列排序。数据列用于命名您的列。


谢谢!如何访问表格的元素?
albus_c 2014年

如果要调用列,请使用data.a(如果您将列命名为“ a”)。
pietrovismara 2014年

1
或者,如果您要调用单行,则可以使用data.a [1](此示例调用列的第一行)
pietrovismara 2014年

大!这样就解决了所有问题
albus_c 2014年

87

我想补充上面的答案,你可以直接使用

df = pd.read_fwf('output_list.txt')

fwf代表固定宽度的格式化行。


38

@Pietrovismara的解决方案是正确的,但我只想添加:可以使用pd.read_csv来执行此操作,而不必使用单独的行来添加列名称。

df = pd.read_csv('output_list.txt', sep=" ", header=None, names=["a", "b", "c"])


13

如果您没有为数据分配索引,并且不确定间距是多少,可以使用让熊猫分配索引并查找多个空格。

df = pd.read_csv('filename.txt', delimiter= '\s+', index_col=False)

3
同样,您可以指定更详细的参数delim_whitespace=True而不是'\s+'定界符
ALollz,

8

您可以这样做:

import pandas as pd
df = pd.read_csv('file_location\filename.txt', delimiter = "\t")

(例如df = pd.read_csv('F:\ Desktop \ ds \ text.txt',分隔符=“ \ t”)


6

根据熊猫的最新更改,您可以使用read_csv,不建议使用read_table:

import pandas as pd
pd.read_csv("file.txt", sep = "\t")

4

您可以使用read_table命令导入文本文件,如下所示:

import pandas as pd
df=pd.read_table('output_list.txt',header=None)

加载后需要进行预处理


1

通常,我通常先看一下数据,或者只是尝试将其导入并执行data.head(),如果看到列之间用\ t分隔,则应指定sep="\t"否则sep = " "

import pandas as pd     
data = pd.read_csv('data.txt', sep=" ", header=None)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.