如何在 Pandas 中遍历 DataFrame 中的行

2022-01-29 00:00:00 python pandas dataframe

问题描述

我有一个来自 Pandas 的 DataFrame:

I have a DataFrame from Pandas:

import pandas as pd
inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}]
df = pd.DataFrame(inp)
print df

输出:

   c1   c2
0  10  100
1  11  110
2  12  120

现在我想遍历这个框架的行.对于每一行,我希望能够通过列名访问其元素(单元格中的值).例如:

Now I want to iterate over the rows of this frame. For every row I want to be able to access its elements (values in cells) by the name of the columns. For example:

for row in df.rows:
   print row['c1'], row['c2']

在 Pandas 中可以做到这一点吗?

Is it possible to do that in Pandas?

我发现了这个 类似问题.但它并没有给我我需要的答案.例如,这里建议使用:

I found this similar question. But it does not give me the answer I need. For example, it is suggested there to use:

for date, row in df.T.iteritems():

for row in df.iterrows():

但我不明白 row 对象是什么以及如何使用它.

But I do not understand what the row object is and how I can work with it.


解决方案

DataFrame.iterrows 是生成索引和行(作为系列)的生成器:

DataFrame.iterrows is a generator which yields both the index and row (as a Series):

import pandas as pd

df = pd.DataFrame({'c1': [10, 11, 12], 'c2': [100, 110, 120]})
df = df.reset_index()  # make sure indexes pair with number of rows
for index, row in df.iterrows():
    print(row['c1'], row['c2'])

10 100
11 110
12 120

相关文章