python - 从 Pandas 中的 iterrows() 获取行位置而不是行索引

标签 python python-3.x pandas for-loop

我是 stackoverflow 的新手,我进行了研究但没有找到令人满意的答案。

我知道我可以通过使用 df.iterrows() 遍历 df 来获取行索引。但是,如果我想获得行位置而不是行 idx 怎么办。我可以使用什么方法?

我正在处理的示例代码如下:

df = pd.DataFrame({'month': ['Jan', 'Feb', 'March', 'April'],
               'year': [2012, 2014, 2013, 2014],
               'sale':[55, 40, 84, 31]})

df = df.set_index('month')

for idx, value in df.iterrows():
    print(idx)

我怎样才能得到输出:

0
1
2
3

谢谢!

最佳答案

如果您需要行号而不是索引,您应该:

  1. 在循环中使用enumerate 作为计数器。
  2. 不要提取索引,请参阅下面的选项。

选项 1

在大多数情况下,出于性能原因,您应该尝试使用 df.itertuples 而不是 df.iterrows。您可以指定 index=False,以便第一个元素不是索引。

for idx, row in enumerate(df.itertuples(index=False)):
    # do something

df.itertuples为每一行返回一个命名元组。

选项 2

使用df.iterrows .这比较麻烦,因为您需要分离出一个未使用的变量。此外,这与 itertuples 相比效率低下。

for idx, (_, row) in enumerate(df.iterrows()):
    # do something

关于python - 从 Pandas 中的 iterrows() 获取行位置而不是行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50485174/

相关文章:

python - 创建一个 xpath 增加的 for 循环

python - Google CloudSQLAdmin - 服务帐户没有存储桶所需的权限

python - 在字符串中查找最重复(不是最常见)序列的算法(又名串联重复)

python - Python 中的时序模幂运算 : syntax vs function

python - Pandas 小数据效率

python - 如何为两列之间的所有日期添加行?

python - 更改 uwsgi 感兴趣的应用程序文件?

python - `tf.reshape(a, [m, n])` 和 `tf.transpose(tf.reshape(a, [n, m]))` 之间的区别?

python - 计算两个字符串中的字符数的问题

Pandas:如何预览在某些列下排序的多行