Pandas로 그룹화 한 결과를 인쇄하고 싶습니다.
데이터 프레임이 있습니다.
import pandas as pd
df = pd.DataFrame({'A': ['one', 'one', 'two', 'three', 'three', 'one'], 'B': range(6)})
print(df)
A B
0 one 0
1 one 1
2 two 2
3 three 3
4 three 4
5 one 5
‘A’로 그룹화 한 후 인쇄 할 때 다음이 있습니다.
print(df.groupby('A'))
<pandas.core.groupby.DataFrameGroupBy object at 0x05416E90>
그룹화 된 데이터 프레임을 어떻게 인쇄 할 수 있습니까?
만약 내가한다면:
print(df.groupby('A').head())
그룹화되지 않은 것처럼 데이터 프레임을 얻습니다.
A B
A
one 0 one 0
1 one 1
two 2 two 2
three 3 three 3
4 three 4
one 5 one 5
나는 다음과 같은 것을 기대하고 있었다.
A B
A
one 0 one 0
1 one 1
5 one 5
two 2 two 2
three 3 three 3
4 three 4
답변
간단하게 :
grouped_df = df.groupby('A')
for key, item in grouped_df:
print(grouped_df.get_group(key), "\n\n")
이것도 작동합니다.
grouped_df = df.groupby('A')
gb = grouped_df.groups
for key, values in gb.iteritems():
print(df.ix[values], "\n\n")
선택적 키 그룹화의 경우 :key_list_from_gb
다음을 사용하여, 안에 원하는 키를 삽입합니다 gb.keys()
. 예를 들어,
gb = grouped_df.groups
gb.keys()
key_list_from_gb = [key1, key2, key3]
for key, values in gb.items():
if key in key_list_from_gb:
print(df.ix[values], "\n")
답변
단순히 표시하는 방법을 찾고 있다면 describe ()를 사용할 수 있습니다.
grp = df.groupby['colName']
grp.describe()
이것은 당신에게 깔끔한 테이블을 제공합니다.
답변
head()
버전 0.12와 0.13 사이 의 변경 동작을 확인했습니다 . 저에게는 버그처럼 보입니다. 문제를 만들었습니다 .
그러나 groupby 작업은 실제로 그룹별로 정렬 된 DataFrame을 반환하지 않습니다. 이 .head()
방법은 여기서 약간 오해의 소지가 있습니다 df
. 그룹화 한 객체 (이 경우 )를 다시 검사 할 수있는 편리한 기능 입니다. 의 결과 groupby
는 별도의 개체 인 GroupBy
개체입니다. 당신이해야합니다 apply
, transform
또는filter
DataFrame 또는 시리즈로 다시 얻을 수 있습니다.
A 열의 값을 기준으로 정렬하려는 경우를 사용해야합니다 df.sort('A')
.
답변
또 다른 간단한 대안 :
for name_of_the_group, group in grouped_dataframe:
print (name_of_the_group)
print (group)
답변
또한 다른 간단한 대안은 다음과 같습니다.
gb = df.groupby("A")
gb.count() # or,
gb.get_group(your_key)
답변
이전 답변 외에도 :
예를 들어,
df = pd.DataFrame({'A': ['one', 'one', 'two', 'three', 'three', 'one'], 'B': range(6)})
그런 다음 간단한 한 줄 코드
df.groupby('A').apply(print)
답변
좋은 통찰력을 주신 Surya에게 감사드립니다. 나는 그의 솔루션을 정리하고 단순히 다음을 수행합니다.
for key, value in df.groupby('A'):
print(key, value)