pandasデータフレーム内の一意の値をgroupbyで並べ替えようとしています。
df = pd.DataFrame({
... 'gr1': ['A', 'A', 'A','A', 'B', 'B', 'B','B'],
'gr1_sum' : [100,100 ,100,100, 200,200,200,200],
'rank_gr1': [2, 2, 2, 2, 1, 1, 1, 1],
... 'gr2': ['a1', 'a1', 'a2','a2', 'b1', 'b1', 'b2','b2'],
'gr2_sum' : [30,30 ,40,40, 20,20,10,10]})
#df.sort_values(by=['col2'],inplace = True)
rank_gr1_sort = pd.unique(df['rank_gr1'].values)
rank_gr2_sort = df.sort_values(['rank_gr1']).groupby(['gr1','gr2'])['gr2_sum'].unique()
rank_gr1_sort
array([2, 1], dtype=int64)
rank_gr2_sort
gr1 gr2
A a1 [30]
a2 [40]
B b1 [20]
b2 [10]
Name: gr2_sum, dtype: object
私が持っている必要があるのはこれです。
gr1 gr2
B b1 [20]
b2 [10]
A a1 [30]
a2 [40]
Name: gr2_sum, dtype: object
この出力をどのように達成しますか?
THX!
sort=False
groupbyの下を通過します。
ドキュメントから:
sort:bool、デフォルトのTrueSortグループキー。これをオフにすると、パフォーマンスが向上します。これは、各グループ内の観測の順序には影響しないことに注意してください。Groupbyは、各グループ内の行の順序を保持します。
rank_gr2_sort = df.sort_values(['rank_gr1']).groupby(
['gr1','gr2'],sort=False)['gr2_sum'].unique()
gr1 gr2
B b1 [20]
b2 [10]
A a1 [30]
a2 [40]
Name: gr2_sum, dtype: object
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加