在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