如何删除" Pandas"来自itertuples的对象名称?

时间:2016-10-26 13:20:39

标签: python python-3.x pandas

我有以下数据框:

df = pd.DataFrame({'col1': [1, 2], 'col2': [0.1, 0.2]},
                      index=['a', 'b'])

然后:

tuples = list(df.itertuples(index=False))
tuples

尽管如此,我注意到元组的名称为"Pandas"。尽管我查看了itertuples [Pandas(col1=1, col2=0.10000000000000001), Pandas(col1=2, col2=0.20000000000000001)] 的参数,但我还没有找到如何删除它。

name=''

我试图放col1=1。但是,它删除了我需要的col2=2[(col1=1, col2=0.10000000000000001), (col1=2, col2=0.20000000000000001)] 名称。知道如何删除它们,以便获得更多信息:

{{1}}

2 个答案:

答案 0 :(得分:2)

namedtuple需要使用collections模块的名称...活动,如果没有名称,则无法创建namedtuple

import collections
collections.namedtuple('Person', 'name age gender')
Out[6]: __main__.Person   

现在没有名字

 In[7]: collections.namedtuple('', 'name age gender')
    Traceback (most recent call last):
      File "C:\Anaconda2\lib\site-packages\IPython\core\interactiveshell.py", line 2885, in run_code
        exec(code_obj, self.user_global_ns, self.user_ns)
      File "<ipython-input-7-12b9f81e7899>", line 1, in <module>
        collections.namedtuple('', 'name age gender')
      File "C:\Anaconda2\lib\collections.py", line 343, in namedtuple
        if name[0].isdigit():

长答案简短,如果你想要名称,你需要一个namedtuplenamedtuple需要一个名字。

如果您不想要名称,请使用常规tuple,但常规tuple没有'col'参数

因此调用df.itertuples()会返回namedtuple并致电df.itertuples(index=False, name=None)返回常规tuple

答案 1 :(得分:1)

您可以尝试:

tuples = list(df.itertuples(index=False, name=None))

请注意文件:

  

name:string,默认“Pandas”   返回的namedtuples的名称或 None以返回常规元组

更多编辑: 我不认为你可以得到结果的印刷品:

[(col1=1, col2=2)]

由于namedtuple的文档指出Pandas(col1=1, col2=2)是一个命名元组,其中Pandas是此命名元组的typename。打印出来时,它会打印出typename

对于您的应用程序,如果您只是尝试通过迭代方式迭代数据框,namedtuple和常规tuple都有效,则可以忽略Panda名称。