XList=[2,3,4,5,5,6]
YList=['A','A','A','B','A','A']
df = pd.DataFrame({'X':XList,
'Y':YList})
df
X Y
0 10 A
1 3 A
2 4 A
3 5 B
4 5 A
5 6 A
如何仅重新排序第3行和第4行(大小写:相同的X值),因此它们在Y(A,B)中按升序排列:
每当X值相等时,它应重新排序Y值。
X Y
0 10 A
1 3 A
2 4 A
3 5 A
4 5 B
5 6 A
答案 0 :(得分:1)
如果您只想排序YList
XList
值相等的值,请输入以下代码:
>>> XList=[2,3,4,5,5,6]
>>> YList=['A','A','A','B','A','A']
>>> idx = []
>>> for i in range(len(XList)-1):
... if XList[i]==XList[i+1]: idx.append(i)
... else:
... if len(idx)>=1:
... idx.append(i)
... YList[idx[0]:idx[-1]+1] = sorted(YList[idx[0]:idx[-1]+1])
... idx=[]
...
>>> YList
['A', 'A', 'A', 'A', 'B', 'A']
>>> df = pd.DataFrame({'X':XList,
... 'Y':YList})
>>> df
X Y
0 2 A
1 3 A
2 4 A
3 5 A
4 5 B
5 6 A