前言

在对DataFrame数据进行处理时,存在需要对数据内容进行遍历的场景。因此记录一下按照行,列遍历的几种方式。


一、按行遍历

1. 使用loc或iloc方法

  • loc:表示location,填写内容为行的值或者列表,若填写内容为值,则返回对应行的内容(Series类型);若填写内容为列表,则返回对应行的内容(DataFrame类型)
  • iloc:表示integer+location,填写内容为行的索引(int类型)或者列表,返回内容与loc相同。

因此若需要按照行进行遍历时,

  1. 先可以使用index方法获取索引内容,再使用loc方法
  2. 先可以使用shape[0]方法获取总行数,再使用iloc方法

2. 使用iterrows()方法

  • iterrows():按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[name]对元素进行访问

因此可以直接使用iterrows()方法,获取得到行内容

代码如下:

data = {'a': {'x': [1, 1], 'y': [2, 1], 'z': [3, 1]},
        'b': {'x': [1, 2], 'y': [2, 2], 'z': [3, 2]},
        'c': {'x': [1, 3], 'y': [2, 3], 'z': [3, 3]}}
data_pd = pd.DataFrame(data)

print(data_pd)

for row in data_pd.index:
    print(data_pd.loc[row]['a'])

for row_id in range(data_pd.shape[0]):
    print(data_pd.iloc[row_id]['a'])

for index, row in data_pd.iterrows():
    print(row['a'])

运行结果,三种方法结果相同:

        a       b       c
x  [1, 1]  [1, 2]  [1, 3]
y  [2, 1]  [2, 2]  [2, 3]
z  [3, 1]  [3, 2]  [3, 3]

[1, 1]
[2, 1]
[3, 1]

二、按列遍历

1. 使用列索引方式

DataFrame可以直接使用[列名称]的方式获取列的值,即data_pd['a']即可得到列内容。


因此若需要按照列进行遍历时,

  1. 先可以使用colums方法获取列内容,再使用[列名称]方式

2. 使用iteritems()方法

  • iteritems():按列遍历,将DataFrame的每一列迭代为(列名, Series)对,可以通过row[index]对元素进行访问

因此可以直接使用iteritems()方法,获取得到列内容

代码如下:

data = {'a': {'x': [1, 1], 'y': [2, 1], 'z': [3, 1]},
        'b': {'x': [1, 2], 'y': [2, 2], 'z': [3, 2]},
        'c': {'x': [1, 3], 'y': [2, 3], 'z': [3, 3]}}
data_pd = pd.DataFrame(data)

print(data_pd)

for col in data_pd.columns:
    print(data_pd[col].iloc[0])

for index, col in data_pd.iteritems():
    print(col.iloc[0])

运行结果,两种方法结果相同:

        a       b       c
x  [1, 1]  [1, 2]  [1, 3]
y  [2, 1]  [2, 2]  [2, 3]
z  [3, 1]  [3, 2]  [3, 3]

[1, 1]
[1, 2]
[1, 3]
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐