2017-05-02 3 views
-3

데이터 프레임에 행을 적용 함수와 결합하려고했지만 할 수 없습니다. column (c1 + c2) 정보가 동일하면 하나의 목록에 행을 결합하고 싶습니다. 예python : 데이터 프레임의 행을 결합하는 방법

Dataframe df1 
     c1 c2 c3 
    0 0 x {'a':1 ,'b':2} 
    1 0 x {'a':3 ,'b':4} 
    2 0 y {'a':5 ,'b':6} 
    3 0 y {'a':7 ,'b':8} 
    4 2 x {'a':9 ,'b':10} 
    5 2 x {'a':11 ,'b':12} 

예상 결과에 대한

Dataframe df1 
     c1 c2 c3 
    0 0 x [{'a':1 ,'b':2},{'a':3 ,'b':4}] 
    1 0 y [{'a':5 ,'b':6},{'a':7 ,'b':8}] 
    2 2 z [{'a':9 ,'b':10},{'a':11,'b':12}] 
+0

확인하셨습니까? http://stackoverflow.com/questions/39954668/how-to -convert-column-in-pandas-dataframe에 값 목록 포함? – plasmon360

+0

팬더 또는 R을 사용하거나 무엇을 사용 하든지 (및 태그 지정) – greggo

답변

1

소스 판다 DF :

In [20]: df 
Out[20]: 
    c1 c2     c3 
0 0 x {'a': 1, 'b': 2} 
1 0 x {'a': 3, 'b': 4} 
2 0 y {'a': 5, 'b': 6} 
3 0 y {'a': 7, 'b': 8} 
4 2 x {'a': 9, 'b': 10} 
5 2 x {'a': 11, 'b': 12} 

해결책 :

In [21]: df.groupby(['c1','c2'])['c3'].apply(list).to_frame('c3').reset_index() 
Out[21]: 
    c1 c2          c3 
0 0 x  [{'a': 1, 'b': 2}, {'a': 3, 'b': 4}] 
1 0 y  [{'a': 5, 'b': 6}, {'a': 7, 'b': 8}] 
2 2 x [{'a': 9, 'b': 10}, {'a': 11, 'b': 12}] 
,617,

참고 : 팬더 DF 셀에 비 스칼라 값을 사용하지 않는 것이 좋습니다. 다양한 어려움 및 성능 문제가 발생할 수 있습니다.

+0

to_frame은 내가 찾고있는 것입니다. 고맙습니다! – hyon

+0

@hyon, 여러분은 환영합니다. 질문에 대답했다고 생각되면 [accepting] (http://meta.stackexchange.com/a/5235) 답을 생각하십시오. – MaxU

관련 문제