我有以下数据框:
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}}
答案 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():
长答案简短,如果你想要名称,你需要一个namedtuple
而namedtuple
需要一个名字。
如果您不想要名称,请使用常规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
名称。