如何将DataFrame中特定位置起的所有值向右偏移?
解决方案
首先构建原始DataFrame:
import pandas as pd data = { 'A': [0.1, 1.1, 2.1, 3.1, 4.1, 5.1], 'B': [0.2, 1.2, 2.2, 3.2, 4.2, 5.2], 'C': [0.3, 1.3, 2.4, 3.4, 4.4, 5.3], 'D': [0.4, 1.4, 2.5, 3.5, 4.5, 5.4], 'E': [0.5, 1.5, 2.6, 3.6, 4.6, 5.5] } df = pd.DataFrame(data)
针对特定行和列执行右移操作:
# 定义需要处理的行索引和列名 target_rows = [2, 3, 4] target_cols = ['C', 'D', 'E'] # 将目标行的C→D、D→E赋值,实现右移 df.loc[target_rows, target_cols[1:]] = df.loc[target_rows, target_cols[:-1]].values # 清空目标行的C列 df.loc[target_rows, target_cols[0]] = None
执行后输出的DataFrame即为期望结果:
A B C D E 0 0.1 0.2 0.3 0.4 0.5 1 1.1 1.2 1.3 1.4 1.5 2 2.1 2.2 NaN 2.4 2.5 3 3.1 3.2 NaN 3.4 3.5 4 4.1 4.2 NaN 4.4 4.5 5 5.1 5.2 5.3 5.4 5.5
说明
- 通过
loc精准定位需要操作的行和列,避免影响其他数据 - 利用列切片实现值的右移传递,最后将起始列置空完成需求
内容的提问来源于stack exchange,提问作者TF7
相关产品推荐
相关产品推荐

