天天看點

python pandas的groupBy 使用

需求

想看着兩個列作為分組key的情況下得到一個詞典,這樣可以友善來轉換資料。

代碼

代碼 可以來看下

df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],  
                  'C': [1, 2, 3]})
print(df)
key = ['A','B']
#group = df.groupBy(key)
groupDic = dict(list(df.groupby(key)))
for key in groupDic:
    print(key[0],key[1])
    print('key={}'.format(key))
    print('{}'.format(groupDic[key]['A']))
    print('-'*40)


##  多列可以通過 key[i] ,i 來作為坐标來擷取資料
for key in groupDic:
    print(key[0],key[1])
    

           

結果:

A  B  C
0  a  b  1
1  b  a  2
2  a  c  3
a b
key=('a', 'b')
0    a
Name: A, dtype: object
----------------------------------------
a c
key=('a', 'c')
2    a
Name: A, dtype: object
----------------------------------------
b a
key=('b', 'a')
1    b
Name: A, dtype: object
----------------------------------------
a b
a c
b a
           

groupby 選取幾個資料

groupby 之後選取資料做新的dataframe,通過head來擷取分組中的資料

new_df = df.groupby(['ship',"x","y"]).head(1)
           

有可能你對選取的資料有一些要求,比如擷取分組中某列最小的資料? 可以先對這列排序,

# 按時間排序的
testData.sort_values("time",inplace=True)
           

繼續閱讀