2
목록 열이있는 팬더 데이터 프레임에서 각 그룹에 해당하는 목록을 연결하는 목적으로 간단한 groupby 작업을 수행하려고합니다. 단일 열에 그룹화 할 때 잘 작동하지만 두 열을 그룹화 할 때 실패 이유를 설명 할 수 없습니다. 단순화 된 예 : 나는 a
및 b
(즉 x.groupby(['a','b'])['c'].sum()
)에 그룹에 시도하는 경우 팬더는 여러 열을 그룹화 할 때 목록 열을 groupby와 연결합니다.
x.groupby('b')['c'].sum()
b
a [1, 2, 3, 4, 5, 6]
b [7, 8]
dtype: object
x.groupby('a')['c'].sum()
a
1 [1, 2, 3, 4]
2 [5, 6, 7, 8]
dtype: object
, 그것은 변함없이 ValueError: Function does not reduce
실패
a
또는
b
작품에 그룹화 이제
x = pd.DataFrame({'a':[1,1,2,2],'b':['a','a','a','b'],'c':[[1,2],[3,4],[5,6],[7,8]]})
a b c
0 1 a [1, 2]
1 1 a [3, 4]
2 2 a [5, 6]
3 2 b [7, 8]
, . 이 현상이 발생하는 이유는 볼 수없는 표면에
, 중 우리가 목록을 연결하는 방법,하지만 난 그게 팬더 내부 함께 할 수있는 뭔가가 상상 ...대안 또는 설명 등?
'c' 열이 숫자 열이라면 잘 작동하므로 목록과 함께 처리하지 않는'sum' 함수와 관련이 있다고 생각합니다. 때로는 옳은 일을하지만 몇 가지 이유로 그것이 두 번째라고 불리는 방식을 망칠 것입니다. – cd98
아, 좋은 지적이야. 나는 그것을 확인 했어야했다. 어쨌든, 나는 @kabanus가 이것이 버그 일 가능성이 옳다고 생각한다. (우리가 파이썬 적이라면'sum'은 딸꾹질없이리스트를 처리해야한다.) – moustachio
분명히 버그는 아니지만,'.sys (sum)'이'.sum()'은 목록에서''sum'' 함수를 어떻게 작동시키는지를 소스 코드에서 볼 수 있습니다. – cd98