重新排列行值

时间:2019-04-28 11:46:30

标签: python pandas

我有100列和200行。每个值均包含“ First”,“ Second”,“ King”或“ Queen”,并与其他随机字符串连接,并用_分隔。注意:所有这些都与其他值串联在一起。每行只有一个“第一”,但其他行可以有多个。

下面是一个示例:

enter image description here

我想根据我的条件重新排列每一行的值:

  • “第一”必须始终位于第一列。
  • “第二”必须在“第一”之后
  • “国王”必须排在“第二”之后
  • “女王”必须紧随“国王”之后

所需的输出:

我试图做一个for循环来迭代每一行,但是我不知道如何像我的要求那样切换值或替换。

enter image description here

1 个答案:

答案 0 :(得分:2)

尝试:

l=['First','Second','King','Queen']
d=dict(zip(l,range(len(l))))
#{'First': 0, 'Second': 1, 'King': 2, 'Queen': 3}
df=pd.DataFrame(np.sort(df.replace(d),axis=1),columns=df.columns,
                index=df.index).replace({v:k for k,v in d.items()})
print(df)

         A       B       C     ETC
1    First  Second  Second  Second
2    First  Second  Second    King
3    First  Second    King   Queen
ETC  First  Second  Second    King