使用特定规则重新排序pandas DataFrame

时间:2014-12-15 12:07:12

标签: python pandas group-by

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

1 个答案:

答案 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