首页 > 解决方案 > 数据操作 - 移动行操作

问题描述

我有一个 Pandas DataFrame,我想循环column 1,如果列值是vergleich我将行单元格向右移动一次。

这是我的尝试:

for i,j in df.iterrows():
    if j[1]== "stringobject":
        df.shift(periods=1,axis=1)
print(df)

当我打印 df 时,我没有看到任何变化。请告知如何解决这个问题

标签: pythonpandasdataframedata-manipulationshift

解决方案


IIUC,使用这个 MCVE 试试这个:

df = pd.DataFrame({'col1':[1,2,3,'A','A'],'col2':['A','A','A','Z','Z'], 'col3':['Z','Z','Z', np.nan, np.nan]})

#col1 col2 col3
#0    1    A    Z
#1    2    A    Z
#2    3    A    Z
#3    A    Z  NaN
#4    A    Z  NaN 

m = df['col1'] == 'A'
df[m] = df[m].shift(1, axis=1)

输出:

  col1 col2 col3
0    1    A    Z
1    2    A    Z
2    3    A    Z
3  NaN    A    Z
4  NaN    A    Z

推荐阅读