使用pandas从txt加载数据

alb*_*s_c 118 python io pandas

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

import pandas as pd

data = pd.read_csv('output_list.txt', header = None)
print data
Run Code Online (Sandbox Code Playgroud)

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

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

pie*_*ara 161

您可以使用:

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

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

  • 或者,如果您想调用单行,可以使用 data.a[1] (本示例调用列的第一行) (2认同)

小智 59

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

df = pd.read_fwf('output_list.txt')
Run Code Online (Sandbox Code Playgroud)

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


Sam*_*rry 31

@ Pietrovismara的解决方案是正确的,但我只想添加:而不是有一个单独的行来添加列名,可以从pd.read_csv执行此操作.

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


ram*_*ddy 21

你可以用它

import pandas as pd
dataset=pd.read_csv("filepath.txt",delimiter="\t")
Run Code Online (Sandbox Code Playgroud)


mpr*_*iya 11

如果要加载指定列名的txt文件,可以使用下面的代码。这对我有用。

import pandas as pd    
data = pd.read_csv('file_name.txt', sep = "\t", names = ['column1_name','column2_name', 'column3_name'])
Run Code Online (Sandbox Code Playgroud)


小智 7

您可以这样做:

import pandas as pd
df = pd.read_csv('file_location\filename.txt', delimiter = "\t")
Run Code Online (Sandbox Code Playgroud)

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


bfr*_*e67 7

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

df = pd.read_csv('filename.txt', delimiter= '\s+', index_col=False)
Run Code Online (Sandbox Code Playgroud)

  • 同样,您可以指定更详细的参数“delim_whitespace=True”而不是“\s+”分隔符 (3认同)

小智 7

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

import pandas as pd
df=pd.read_table('output_list.txt',header=None)
Run Code Online (Sandbox Code Playgroud)

加载后需要进行预处理


par*_*ari 7

根据 pandas 的最新变化,您可以使用 read_csv , read_table 已弃用:

import pandas as pd
pd.read_csv("file.txt", sep = "\t")
Run Code Online (Sandbox Code Playgroud)