我有一个文本文件:
sample value1 value2
A 0.1212 0.2354
B 0.23493 1.3442
我导入它:
with open('file.txt', 'r') as fo:
notes = next(fo)
headers,*raw_data = [row.strip('\r\n').split('\t') for row in fo] # get column headers and data
names = [row[0] for row in raw_data] # extract first row (variables)
data= np.array([row[1:] for row in raw_data],dtype=float) # get rid of first row
如果我然后转换它:
s = pd.DataFrame(data,index=names,columns=headers[1:])
数据被识别为浮点数。我可以通过s = s.reset_index()将样本名称作为列返回。
如果我这样做
s = pd.DataFrame(raw_data,columns=headers)
浮点数是对象,我无法执行标准计算。
您将如何制作数据框?将数据导入为dict更好吗?
BTW我正在使用python 3.3
答案 0 :(得分:1)
您可以将数据文件直接解析为数据框,如下所示:
df = pd.read_csv('file.txt', sep='\t', index_col='sample')
哪个会给你:
value1 value2
sample
A 0.12120 0.2354
B 0.23493 1.3442
[2 rows x 2 columns]
然后,你可以进行计算。
答案 1 :(得分:0)
要解析这样的文件,应该使用pandas read_csv函数。
以下是一个最小示例,显示使用参数delim_whitespace
设置为True
的{{3}}
import pandas as pd
from StringIO import StringIO # Python2 or
from io import StringIO # Python3
data = \
"""sample value1 value2
A 0.1212 0.2354
B 0.23493 1.3442"""
# Creation of the dataframe
df = pd.read_csv(StringIO(data), delim_whitespace=True)