2017-11-20 2 views
1

データフレームdf_Mは4列、グループは'protein'、並べ替えは'[M]'です。なぜpandas groupbyは、(groupby_info)列をデータフレームに追加するのか、それを削除するのはなぜですか?

df_M = df_M[['protein', 'cl', 'pept', '[M]']] 
df_M = df_M.groupby('protein').apply(pd.DataFrame.sort_values, '[M]') 

結果は'protein'indexの複製される前に2つの追加の列に出てきますか?これらの列を取得せずにgroupbyと並べ替えを行うには?

答えて

1

私はあなたがsort_valuesで両方の列でgroupbyが、sortを必要といけないと思う:

df_M = df_M.sort_values(['protein','[M]']) 

しかしgroupbyを使用したい場合は、パラメータgroup_keys=Falseを追加します。

group_keys:ブール値、デフォルト

適用呼び出し、サンプル枚

df_M = df_M.groupby('protein', group_keys=False).apply(pd.DataFrame.sort_values, '[M]') 

を識別するためのインデックスにグループキーを追加します。

df_M = pd.DataFrame({'protein':list('ababba'), 
        '[M]':[2,3,5,8,0,6], 
        'cl':[1,2,3,4,5,6]}) 

print (df_M) 
    [M] cl protein 
0 2 1  a 
1 3 2  b 
2 5 3  a 
3 8 4  b 
4 0 5  b 
5 6 6  a 

df_M = df_M.sort_values(['protein','[M]']) 

#df_M = df_M.groupby('protein', group_keys=False).apply(pd.DataFrame.sort_values, '[M]') 

print (df_M) 
    [M] cl protein 
0 2 1  a 
2 5 3  a 
5 6 6  a 
4 0 5  b 
1 3 2  b 
3 8 4  b 
関連する問題