我必须读取这个txt文件来为表创建一个索引(我只写第一行):
ocmov01f
('TIREOO', <type 'str'>, None, 1, 1, 0, False)
('PROFOO', <type 'str'>, None, 10, 10, 0, False)
('DT01OO', <class 'decimal.Decimal'>, None, 8, 8, 0, False)
('DTMNOO', <class 'decimal.Decimal'>, None, 8, 8, 0, False)
('CDDTOO', <type 'str'>, None, 2, 2, 0, False)
('TDOCOO', <type 'str'>, None, 1, 1, 0, False)
('NROROO', <class 'decimal.Decimal'>, None, 7, 7, 0, False)
('NRRGOO', <class 'decimal.Decimal'>, None, 3, 3, 0, False)
('NSRGOO', <class 'decimal.Decimal'>, None, 3, 3, 0, False)
('CDAROO', <type 'str'>, None, 13, 13, 0, False)
('CTGMOO', <type 'str'>, None, 30, 30, 0, False)
列的名称是'TIREOO'之类的字符串,然后有一些关于列内容应该是什么类型的信息。 我已经使用列名引用的数据成功导入了表,但是我需要一种快速的方法来导入列名(它们是132),是否可以读取文件并列出名称?或者我必须手动创建不同类型的文件或直接写一个名称列表?
答案 0 :(得分:0)
当你说
时我已成功导入包含数据的表
你有工作DataFrame
吗?
如果是,请使用DataFrame.set_index()
下面的代码可以为您提供所需的索引,但我必须做一些工作才能从文件中删除额外的'
和()
部分。
import pandas as pd
from cStringIO import StringIO
data = """\
('TIREOO', <type 'str'>, None, 1, 1, 0, False)
('PROFOO', <type 'str'>, None, 10, 10, 0, False)
('DT01OO', <class 'decimal.Decimal'>, None, 8, 8, 0, False)
('DTMNOO', <class 'decimal.Decimal'>, None, 8, 8, 0, False)
('CDDTOO', <type 'str'>, None, 2, 2, 0, False)
('TDOCOO', <type 'str'>, None, 1, 1, 0, False)
('NROROO', <class 'decimal.Decimal'>, None, 7, 7, 0, False)
('NRRGOO', <class 'decimal.Decimal'>, None, 3, 3, 0, False)
('NSRGOO', <class 'decimal.Decimal'>, None, 3, 3, 0, False)
('CDAROO', <type 'str'>, None, 13, 13, 0, False)
('CTGMOO', <type 'str'>, None, 30, 30, 0, False)
"""
data = data.replace('(','')
data = data.replace(')','')
# i've named your columns so they are easier to access
# un-named, they default to integer indexing like the rows
# you probably have more meaningful names for them
df = pd.read_csv(StringIO(data), header=None,
names=['a', 'b', 'c', 'd', 'e', 'f', 'g'])
# this is just removing the 'funny' characters from the data
df.g = [item.strip(')') for item in df.g.values]
df.a = [item.strip('(\'') for item in df.a.values]
df.set_index('a')
df
我应该补充说,我已使用from cStringIO import StringIO
,data = """...
和StringIO(data)
部分,因此我可以将数据直接包含在此答案中,并以可运行的形式显示。您只需在自己的代码中使用pd.read_csv(my_data_filename, ...