如何在Pandas中将指定索引范围的数据移动到另一目标区域
Pandas实现指定单元格区域移动的方法
核心操作逻辑如下:
- 选中源区域的数值,赋值给同等大小的目标区域,赋值时加
.values取底层数组,避免Pandas自动索引对齐导致赋值异常 - 清空源区域的内容,即可完成类Excel的区域移动效果
示例代码实现
先构造你给出的示例数据表:
import pandas as pd import numpy as np df = pd.DataFrame( data=[ ['apple', 'pear', 'banana'], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan], [np.nan, np.nan, np.nan] ], columns=['A', 'B', 'C'] )
执行移动操作(将行0列B:C移动到行3列A:B):
# 用iloc按位置索引选中区域 # 赋值源区域值到目标区域 df.iloc[3:4, 0:2] = df.iloc[0:1, 1:3].values # 清空源区域 df.iloc[0:1, 1:3] = np.nan
执行后输出的df就是你需要的效果:
A B C 0 apple NaN NaN 1 NaN NaN NaN 2 NaN NaN NaN 3 pear banana NaN
通用场景适配
如果你的DataFrame使用自定义标签索引,用loc按标签选中区域即可:
# 源区域:行标签A1到B1,列标签N1到M1 # 目标区域:行标签A2到B2,列标签N2到M2 df.loc[A2:B2, N2:M2] = df.loc[A1:B1, N1:M1].values df.loc[A1:B1, N1:M1] = np.nan
注意事项
- 源区域和目标区域的行列数量必须完全一致,否则会触发维度不匹配报错
- 如果你需要用空字符串代替NaN作为清空值,把代码中的
np.nan替换为''即可
内容的提问来源于stack exchange,提问作者Julius Hamilton
相关产品推荐
相关产品推荐

