在Pandas中,DataFrame是一个非常重要的数据结构,在对DataFrame进行遍历的同时修改其单元格内容是常见的需求。本文介绍几种在Pandas中遍历DataFrame并修改单元格的方法。

.loc按标签选择
可以使用`.loc`按行标签和列标签选择单元格,然后赋值:

for row in df.index:
    for col in df.columns:
        df.loc[row, col] = new_value


.iloc按位置选择
使用`.iloc`按整数位置选择单元格,然后赋值: 

for row in range(df.shape[0]):
    for col in range(df.shape[1]):
        df.iloc[row, col] = new_value


.itertuples()遍历行
通过`.itertuples()`遍历行,然后修改指定列:

for row in df.itertuples():
    df.at[row.Index, 'col1'] = new_value

.apply()批量修改
通过`.apply()`在轴上应用函数进行批量修改:   

df[['col1','col2']] = df[['col1','col2']].apply(lambda x: new_value, axis=1)


.iterrows()遍历行
通过`.iterrows()`同时遍历行标签和行值,然后修改:

for label, row in df.iterrows():
    df.at[label, 'col1'] = new_value


举个例子,有这样一个DataFrame:

   |   col1 |  col2 | 
:--|:--|:-- 
0 |   1    |   4
1 |   2    |   5 
2 |   3    |   6


可以这样同时遍历和修改:

for row in df.index:
    for col in df.columns:
        if col == 'col1' and row == 2:
            df.loc[row, col] = 10  

 
结果为:

   |  col1 |  col2 | 
:--|:--|:--
0 |   1   |   4
1 |   2   |   5
2 |  10   |   6
06-06 15:16