使用itertuples迭代pandas数据帧

Sun*_*Sun 17 python pandas

我正在使用itertuples迭代一个pandas数据帧.我也想捕获行号.迭代时:

示例代码:

for row in df.itertuples():
    print row['name']
Run Code Online (Sandbox Code Playgroud)

预期产量:

1 larry
2 barry
3 michael
Run Code Online (Sandbox Code Playgroud)

这里1,2,3是行号.我想避免使用计数器并获取行号.有没有简单的方法来实现这个使用熊猫?

piR*_*red 28

使用时,每行都会itertuples得到一个名字tuple.默认情况下,您可以使用访问该行的索引值row.Index.

如果索引值不是您要查找的值,那么您可以使用 enumerate

for i, row in enumerate(df.itertuples(), 1):
    print(i, row.name)
Run Code Online (Sandbox Code Playgroud)

enumerate 取代丑陋的反建构

  • 为什么柜台难看? (5认同)
  • 非常难看 for(int i=0; i<= arr.length. ; I++) 而不是 enumrate (3认同)

小智 9

for row in df.itertuples():
    print(getattr(row, 'Index'), getattr(row, 'name'))
Run Code Online (Sandbox Code Playgroud)

  • 为什么要获取属性?只需使用“row.Index”、“row.name” (11认同)
  • 您的答案可能是正确的,但有一个解释会帮助其他读者。有关更多信息,请阅读https://stackoverflow.com/help/how-to-answer (5认同)

Chr*_*ris 5

对于不是有效 Python 名称的列名称,请使用:

for i, row in enumerate(df.itertuples(index=False)):
    print(str(i) + row[df.columns.get_loc('My nasty - column / name')])
Run Code Online (Sandbox Code Playgroud)

如果不指定index=False,则将读取已命名的列之前的列。