2
cut
의 DataFrame
에 cut
(하위)을 기록해야합니다.팬더는 커트에서 DataFrame으로 열을 추가합니다.
서브 빈 경계가 모든 cut
에 대해 동일하면 매우 간단합니다. 예를 들어,
df = pd.DataFrame({'A':np.random.random(100), 'B':np.random.random(100)})
# Primary bins: quintiles on column A
df['P'] = pd.qcut(df['A'], 5, labels=range(1,6)).astype(int)
# Secondary bins: quartiles on column B
df['Q'] = df.groupby(['P'])['B'].transform(lambda x: pd.qcut(x, 4, labels=range(1,5)))
그러나, 나는 변환 함수를 사용하는 방법, 또는 다시 cut
경계가 각 주 cut
다른있는 DataFrame,로 두 번째 cut
값을 얻는 방법을 알아낼 수 없습니다. 예를 들어,
subBinBounds = [[0, .1, .5, 1],[0, .3, .6, 1],[0, .2, .7, 1],[0, .4, .6, 1][0, .2, .5, 1]]
for i in range(5):
cut = df[df['P'] == i+1] # P is in {1, 5}
subbin = pd.cut(cut['B'], subBinBounds[i], labels=range(1,4))
cut['Q'] = cut.assign(Q=subbin.values)
# But how do we get 'Q' back into df?
는 흠, 나는 문제가 무엇인지 잘 모릅니다,하지만 난'범위를 사용하는 경우 (1, 6)'나는'IndexError 수 : range'에서리스트 인덱스를. 너는 잘된거야? – jezrael
정확하게, 또한 'range (5)'를 사용할 수 있습니다. 편집 된 답변을 참조하십시오. – jezrael
@feetwet - 고맙습니다. – jezrael