다음 데이터 프레임에 대해 w.r.t freq 열을 그룹화하고 데이터를 저장하고 각 빈의 개수 데이터를 합산합니다.pandas 잘라 내기 및 적용 : 계열에 대한 예기치 않은 동작
예 데이터는 내가 예상대로
0 (0, 1]
1 (1, inf]
2 (1, inf]
Name: freq, dtype: category
Categories (2, object): [(0, 1] < (1, inf]]
그래서 모든 작품 출력
pd.cut(df.freq, bins=[0,1, np.infty])
를 사용하여 데이터를 절단하기 위해이
df = pd.DataFrame({"freq":[1,2,3], "count": [10,25,3]})
print(df)
count freq
0 10 1
1 25 2
2 3 3
처럼 보인다. 그러나 이제 df의 freq 열을 해당 저장소에 매핑하려고합니다. 나는 이것이 적용 할 때 달성 될 수 있다고 생각한다. 형식 오류
TypeError: putmask() argument 1 must be numpy.ndarray, not numpy.int64
하지만, 그 df.freq 시행시에있어서
pd.DataFrame(df.freq).apply(lambda x: pd.cut(x, bins=[0,1, np.infty]))
예상 출력 DataFrame 같이 그러나 followig 방식으로
df.freq.apply(lambda x: pd.cut(x, bins=[0,1, np.infty]))
수율을 적용 이용 빈에 매핑이 반환됩니다.
freq
0 (0, 1]
1 (1, inf]
2 (1, inf]
왜 Series-type에서 캐스팅 된 데이터 프레임이 여기에 필요한가요? TypeError는 예상되는 배열이 정수임을 암시합니다. 그러나, pandas.tile._bin_to_cut 함수를 검사하면이 동작이 어디에서 오는지 알 수 없습니다.
제안 사항이 있습니까?
btw.
print (type(pd.cut(df.freq, bins=[0,1, np.infty])))
<class 'pandas.core.series.Series'>
print (df.groupby(pd.cut(df.freq, bins=[0,1, np.infty]))['count'].sum().reset_index())
freq count
0 (0, 1] 10
1 (1, inf] 28
또한 새 열 출력을 할당 할 수 있습니다 :
을 파이썬 3.6 팬더 0.19.2는groupby
비닝
Series
에 의해 기능
cut
를 반환하는 나는,
apply
이 필요하지 생각해야 할
이해가 안 무엇을 당신의 목적 r "원하는 출력"입니다. 당신은 이미 그 데이터를'cut' 호출의 출력으로 가지고 있습니다. 'apply'로 무엇을 성취하려고합니까? – BrenBarn
freq 열을 bin으로 매핑 한 다음 bin으로 그룹화하려고합니다. 어딘가에 매핑이 누락 된 것 같지만, jezrales가 보여 주듯이 모든 것이 이미 있습니다. – Quickbeam2k1
하지만 왜 "맵핑"해야합니까? 왜 당신은 이미 가지고있는 bin 값으로 그룹화하지 않을까요? – BrenBarn