pandas读取文件并列出清单

时间:2014-08-15 14:18:34

标签: python import pandas

我必须读取这个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),是否可以读取文件并列出名称?或者我必须手动创建不同类型的文件或直接写一个名称列表?

1 个答案:

答案 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 StringIOdata = """...StringIO(data)部分,因此我可以将数据直接包含在此答案中,并以可运行的形式显示。您只需在自己的代码中使用pd.read_csv(my_data_filename, ...