我有一个熊猫数据帧,df:

   c1   c2
0  10  100
1  11  110
2  12  120

如何迭代此数据帧的行?对于每一行,我希望能够通过列的名称访问其元素(单元格中的值)。例如:

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

我发现了一个类似的问题,建议使用以下任一项:

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

但我不知道row对象是什么,以及如何使用它。


当前回答

我正在寻找如何迭代行和列,并在这里结束:

for i, row in df.iterrows():
    for j, column in row.iteritems():
        print(column)

其他回答

您应该使用df.iterrows()。虽然逐行迭代不是特别有效,因为必须创建Series对象。

有一种方法可以在返回DataFrame而不是Series时迭代抛出行。我没有看到任何人提到可以将索引作为列表传递给要作为DataFrame返回的行:

for i in range(len(df)):
    row = df.iloc[[i]]

注意双括号的用法。这将返回具有单行的DataFrame。

 for ind in df.index:
     print df['c1'][ind], df['c2'][ind]

在Pandas数据帧中有很多方法可以迭代行。一种非常简单直观的方法是:

df = pd.DataFrame({'A':[1, 2, 3], 'B':[4, 5, 6], 'C':[7, 8, 9]})
print(df)
for i in range(df.shape[0]):
    # For printing the second column
    print(df.iloc[i, 1])

    # For printing more than one columns
    print(df.iloc[i, [0, 2]])

本例使用iloc隔离数据帧中的每个数字。

import pandas as pd

 a = [1, 2, 3, 4]
 b = [5, 6, 7, 8]

 mjr = pd.DataFrame({'a':a, 'b':b})

 size = mjr.shape

 for i in range(size[0]):
     for j in range(size[1]):
         print(mjr.iloc[i, j])