Lesson9——Pandas iteration遍历

Posted Blair

tags:

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

pandas目录

1 简介

  对于 Series 而言,您可以把它当做一维数组进行遍历操作;而像 DataFrame 这种二维数据表结构,则类似于遍历 Python 字典。

  示例:对于 Series 循环

s = pd.Series(data=np.arange(5),index=[\'rank\'+str(i) for i in np.arange(1,6)])
print(s)
print("-"*10)
for ele in s:
    print(ele)

  输出结果

rank1    0
rank2    1
rank3    2
rank4    3
rank5    4
dtype: int32
----------
0
1
2
3
4

  示例:对于 DataFrame 循环

df = pd.DataFrame(
    \'col1\':np.arange(4),
    \'col2\':np.arange(4,8),
    \'col3\':np.arange(8,12),
,index=[\'row\'+str(i) for i in np.arange(1,5)])
print("原始数据为:\\n",df)
print("遍历:")
for col in df:
    print(col)

  输出结果:输出的是 DataFrame 的列名。

原始数据为:
       col1  col2  col3
row1     0     4     8
row2     1     5     9
row3     2     6    10
row4     3     7    11
遍历:
col1
col2
col3

2 内置迭代方法

  如果想要遍历 DataFrame 的每一行,我们下列函数:

  • items():以键值对 (key,value) 的形式遍历;
  • iteritems():以键值对 (key,value) 的形式遍历;
  • iterrows():以 (row_index,row) 的形式遍历行;
  • itertuples():使用已命名元组的方式对行遍历。

  下面对上述函数做简单的介绍:

2.1 items()函数

  示例:

for label ,content in df.items():
    print(label)
    print(content)

  输出结果:

col1
row1    0
row2    1
row3    2
row4    3
Name: col1, dtype: int32
col2
row1    4
row2    5
row3    6
row4    7
Name: col2, dtype: int32
col3
row1     8
row2     9
row3    10
row4    11
Name: col3, dtype: int32

2.2 iteritems()函数

  示例:

for key,item in df.iteritems():
    print(key)
    print(item)

  输出结果:

col1
row1    0
row2    1
row3    2
row4    3
Name: col1, dtype: int32
col2
row1    4
row2    5
row3    6
row4    7
Name: col2, dtype: int32
col3
row1     8
row2     9
row3    10
row4    11
Name: col3, dtype: int32

2.3 iterrows()

  该方法按行遍历,返回一个迭代器,以行索引标签为键,以每一行数据为值。

  示例如下:

print("原始数据:\\n",df)
print("通过行遍历:")
for row_index,row in df.iterrows():
    print (row_index)
    print(row)

  输出结果:

原始数据:
       col1  col2  col3
row1     0     4     8
row2     1     5     9
row3     2     6    10
row4     3     7    11
通过行遍历:
row1
col1    0
col2    4
col3    8
Name: row1, dtype: int32
row2
col1    1
col2    5
col3    9
Name: row2, dtype: int32
row3
col1     2
col2     6
col3    10
Name: row3, dtype: int32
row4
col1     3
col2     7
col3    11
Name: row4, dtype: int32

  注意:iterrows() 遍历行,其中 row1,row2,row3,row4 是行索引而 col1,col2,col3 是列索引。

2.4 itertuples()函数

  itertuples() 同样将返回一个迭代器,该方法会把 DataFrame 的每一行生成一个元组。

  示例如下:

print("原始数据:\\n",df)
print("通过行遍历1:")
for row in df.itertuples():
    print(row)
print("通过行遍历2:")
for row in df.itertuples():
    for rowdata in row:
        print(rowdata,end=\'\\t\')
    print()

  输出结果:

原始数据:
       col1  col2  col3
row1     0     4     8
row2     1     5     9
row3     2     6    10
row4     3     7    11
通过行遍历1:
Pandas(Index=\'row1\', col1=0, col2=4, col3=8)
Pandas(Index=\'row2\', col1=1, col2=5, col3=9)
Pandas(Index=\'row3\', col1=2, col2=6, col3=10)
Pandas(Index=\'row4\', col1=3, col2=7, col3=11)
通过行遍历2:
row1	0	4	8	
row2	1	5	9	
row3	2	6	10	
row4	3	7	11	

2.5 迭代修改原始值

  如果在迭代过程中修改元素值,会影响原对象,这一点需要大家注意。
  看一组简单的示例:

print("原始数据:\\n",df)
print("通过行遍历:")
for row_index,row in df.iterrows():
    print (row_index)
    print(row)
print(\'修改1:\')
for row_index,row in df.iterrows():
    row[\'col4\']=\'100\'
print(df)
print(\'修改2:\')
for row_index,row in df.iterrows():
    row[\'col1\']=\'100\'
print(df)

  输出结果:

原始数据:
       col1  col2  col3
row1     0     4     8
row2     1     5     9
row3     2     6    10
row4     3     7    11
通过行遍历:
row1
col1    0
col2    4
col3    8
Name: row1, dtype: int32
row2
col1    1
col2    5
col3    9
Name: row2, dtype: int32
row3
col1     2
col2     6
col3    10
Name: row3, dtype: int32
row4
col1     3
col2     7
col3    11
Name: row4, dtype: int32
修改1:
      col1  col2  col3
row1     0     4     8
row2     1     5     9
row3     2     6    10
row4     3     7    11
修改2:
      col1  col2  col3
row1   100     4     8
row2   100     5     9
row3   100     6    10
row4   100     7    11

 

因上求缘,果上努力~~~~ 作者:cute_Learner,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/15867561.html

以上是关于Lesson9——Pandas iteration遍历的主要内容,如果未能解决你的问题,请参考以下文章

lesson9:分布式定时任务

为女儿准备的编程课 Lesson9: Python 面向对象设计

更改列pandas中的类别?

管道中的 Sklearn_pandas 返回 TypeError: 'builtin_function_or_method' object is not iterable

pandas使用itertuples函数迭代dataframe中的数据行并自定义修改行中的数值(update row while iterating over the rows)

Python / Pandas:循环遍历数字列表