我正在研究一个项目来读取一个由用户生成的可变长度的文本文件。文本文件的开头有几条注释,其中一条需要用作列名。我知道可以用genfromtxt()做到这一点,但我需要使用pandas。以下是示例文本文件的开头:
#GeneratedFile
#This file will be generated by a user
#a b c d f g h i j k l m n p q r s t v w x y z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
我需要#a,b,c,...作为列名。我尝试了以下代码行来读取数据并将其更改为数组,但它只返回行并忽略列名。
import pandas as pd
data = pd.read_table('example.txt',header=2)
d = pd.DataFrame.as_matrix(data)
有没有办法在不使用genfromtxt()的情况下执行此操作?
答案 0 :(得分:0)
一种方法可能是尝试以下方法:
df = pd.read_csv('example.txt', sep='\s+', engine='python', header=2)
# the first column name become #a so, replacing the column name
df.rename(columns={'#a':'a'}, inplace=True)
# alternatively, other way is to replace # from all the column names
#df.columns = [column_name.replace('#', '') for column_name in df.columns]
print(df)
结果:
a b c d f g h i j k ... p q r s t v w x y z
0 0 1 2 3 4 5 6 7 8 9 ... 13 14 15 16 17 18 19 20 21 22
1 1 2 3 4 5 6 7 8 9 10 ... 14 15 16 17 18 19 20 21 22 23
[2 rows x 23 columns]