我有一个Pandas DataFrame,我想遍历column 1
,如果列值为vergleich
,则将行单元格向右移动一次。
这是我的尝试:
for i,j in df.iterrows():
if j[1]== "stringobject":
df.shift(periods=1,axis=1)
print(df)
打印df时,看不到任何变化。请告知如何进行此操作
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
只需切下这一块,添加第一列,然后将它们重新连接起来
verg = df.groupby(1).apply(lambda g: g if g.name != 'vergleigh' else g.T.shift(1).T)
编辑:有点奇怪,但是g.T.shift(1).T
有效,而g.shift(1, axis=1)
无效。为什么?