2017-12-24 6 views
2

두 개의 열이있는 DataFrame이 있고 두 번째 열을 첫 번째 열과 두 번째 열 아래에 첫 번째 열을 스택 싶습니다.pandas first와 그 반대로 두 번째 열을 뒤집습니다.

pd.DataFrame({'A':[1,2,3], 'B': [4,5,6]}) 

    A B 
0 1 4 
1 2 5 
2 3 6 

원하는 출력 :

A B 
0 1 4 
1 2 5 
2 3 6 
3 4 1 
4 5 2 
5 6 3 

은 지금까지 나는 시도했다 :

pd.concat([df, df[['B','A']].rename(columns={'A':'B', 'B':'A'})]) 

    A B 
0 1 4 
1 2 5 
2 3 6 
3 4 1 
4 5 2 
5 6 3 

이가 가장 깨끗한 방법이 있나요?

+1

무엇이 연결에 문제가 있습니까? 그 청초한 – Dark

+0

당신은 나에게 말한다! 나는 팬더 전문가가 아니기 때문에 나는 묻고있다. – Imran

+1

그래, 나에게 잘 어울려. –

답변

5

나에게 묻는다면 Concat이 더 좋습니다. 그러나 100 열의 이름을 바꾸면 고통이됩니다. 일반화 된 접근 방식은 numpy flipvstack과 같습니다. 즉

v = df.values 
pd.DataFrame(pd.np.vstack((v, pd.np.fliplr(v))), columns=df.columns) 

    A B 
0 1 4 
1 2 5 
2 3 6 
3 4 1 
4 5 2 
5 6 3 
+1

'fliplr'을 사용하여 왼쪽에서 오른쪽으로 뒤집고 2D 배열을 한 번만 만듭니다 (두 번하는 것이 비효율적입니다). –

+0

@ cᴏʟᴅsᴘᴇᴇᴅ 우리는 df.values로 데이터에 액세스하고 있습니까? 어레이가 생성되지 않고 액세스되었다고 생각하는 것이 잘못 되었습니까? – Dark

+1

그것은 내가 생각하는 것에 달려있다. 경우에 따라 뷰가 반환되고 다른 뷰에서는 새로운 배열이 반환됩니다. 내가 생각하기에 안전 할 것 같아. –