我想根据列和A B C以及“类型”列内的值来移位值。
这是我的数据框:
Name Type A B C
John AR W S W
John BR
John CR
Jack AR S S A
Jack BR
Jack CR
使用融合功能之前需要的数据框:
Name Type A B C
John AR W
John BR S
John CR W
Jack AR S
Jack BR S
Jack CR A
答案 0 :(得分:1)
尝试在每列上使用shift函数:
import pandas as pd
df = pd.DataFrame({'A':['W','','','S','',''],'B':['S','','','S','',''],'C':['W','','','A','','']})
df.B = df.B.shift(1)
df.C = df.C.shift(2)
答案 1 :(得分:1)
您可以使用它。
def func(x):
for col in x.columns[2:]:
for index,val in x.iterrows():
if val.Type[0]==col:
x[col]=x[col].shift(index-x.index[0])
return x
df.groupby('Name').apply(func).fillna(' ')
输入
Name Type A B C
0 John AR W S W
1 John BR
2 John CR
3 Jack AR S S A
4 Jack BR
5 Jack CR
输出
Name Type A B C
0 John AR W
1 John BR S
2 John CR W
3 Jack AR S
4 Jack BR S
5 Jack CR A