2016-10-06 2 views
-1

이것은 stackoverflow에서의 첫 번째 질문이며 Python으로 프로그래밍하는 분야에서 꽤 새로워졌습니다. 당신이 사진 열 "ID"및 "기간"에서 볼 수 있듯이id 열에 따라 새 열을 추가하고 뒤집는 방법

image of what I'm trying to do

이 주어진다. 그것은 csv 데이터 세트이고 "period"의 숫자가 "id 값"에 따라 역순으로 정렬되는 "newColumn"이라는 새 열을 추가하려고합니다. 내 문제를 이해하길 바래.

미리 감사드립니다.

+1

StackOverflow에 오신 것을 환영합니다. 팁에 대한 도움말 섹션에서 좋은 질문을하는 방법을 참조하십시오. 가장 중요한 것은 귀하의 경우 : 질문은 자체 포함되어야하므로 외부 링크를 사용하지 말고 질문 자체에 코드를 게시하십시오. 이것은 두 가지 이유 때문입니다. 우리는 클릭하는 것을 좋아하지 않으며 앞으로 링크가 끊어 질 수 있습니다. – wvdz

+0

메모 해 주셔서 감사합니다. 내 생각에 이미지는 단어가 할 수있는 것보다 쉽게 ​​문제를 설명 할 수 있습니다. 특히, 당신이 새로운 주제에있을 때. 미래를 위해 나는 내가 할 수있는 것을 볼 것입니다. – atr4xxas

답변

1

당신은 sort_values 필요

, 새 열을 만들 인덱스로 정렬되지 대한 values에 의해 numpy array에 정렬 된 열을 변환해야하는 경우 다음
print (df) 
    id period 
0 1  1 
1 1  2 
2 1  3 
3 2  1 
4 2  2 
5 2  3 
6 3  1 
7 3  2 
8 3  3 

print (df.sort_values(by=['id','period'], ascending=[True, False])) 
    id period 
2 1  3 
1 1  2 
0 1  1 
5 2  3 
4 2  2 
3 2  1 
8 3  3 
7 3  2 
6 3  1 

:

df['new'] = df.sort_values(by=['id','period'], ascending=[True, False])['period'].values 
print (df) 
    id period new 
0 1  1 3 
1 1  2 2 
2 1  3 1 
3 2  1 3 
4 2  2 2 
5 2  3 1 
6 3  1 3 
7 3  2 2 
8 3  3 1 
+0

정말 고마워요! 그게 바로 제가 찾고 있던 것이 었습니다! – atr4xxas

1

뭔가를해야만이 같은 :

def f(x, y): 
    if x[0] < y[0] or x[0] == y[0] and x[1] > y[1]: 
     return -1 
    return 1 


d = [1, 2, 3, 4, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4] 
o = [1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3] 
new = zip(o, d) 
new.sort(f) 
print new 
# [(1, 4), (1, 3), (1, 2), (1, 1), (2, 7), (2, 6), (2, 5), (2, 4), (2, 3), (2, 2), (2, 1), (3, 4), (3, 3), (3, 2), (3, 1)] 
print zip(*new)[1] 
# (4, 3, 2, 1, 7, 6, 5, 4, 3, 2, 1, 4, 3, 2, 1)