Python pandas 按行按列遍历DataFrame

Posted 琲世

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python pandas 按行按列遍历DataFrame相关的知识,希望对你有一定的参考价值。

前言

在对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]

以上是关于Python pandas 按行按列遍历DataFrame的主要内容,如果未能解决你的问题,请参考以下文章

二位数组按行按列遍历效率问题小细节

二位数组按行按列遍历效率问题小细节

R语言创建使用矩阵(按行按列填充,矩阵命名,矩阵下标使用,数据框转换为矩阵)

R语言创建使用矩阵(按行按列填充,矩阵命名,矩阵下标使用,数据框转换为矩阵)

python pandas合并数据 按列合并数据 按行合并数据 超简单

numpy特性