私はPythonプログラミングの初心者で、groupby操作のグループラベルを新しいデータフレームのインデックスとして使用する方法を理解しようとしています。例えば、
df = pd.DataFrame({'Country': ['USA', 'USA', 'UK', 'China', 'Canada', 'Australia', 'UK', 'China', 'USA'],
'Year': [1979, 1983, 1987, 1991, 1995, 1999, 2003, 2007, 2011],
'Medals': [52, 30, 25, 41, 19, 17, 9, 14, 12]})
df:
Country Medals Year
0 USA 52 1979
1 USA 30 1983
2 UK 25 1987
3 China 41 1991
4 Canada 19 1995
5 Australia 17 1999
6 UK 9 2003
7 China 14 2007
8 USA 12 2011
c1 = df.groupby(df['Country'], as_index=True, sort=False, group_keys=True).size()
c1:
Country
USA 3
UK 2
China 2
Canada 1
Australia 1
上記のc1の結果を正確にその形式で使用して新しいデータフレームを作成したいのですが、それができませんでした。以下は私が得るものです:
d1 = pd.DataFrame(np.array(c1), columns=['Frequency'])
d1:
Frequency
0 3
1 2
2 2
3 1
4 1
デフォルトの0、1、2、3、4ではなく、インデックスとしてグループラベルが必要です。これはまさに私が望むものです。
Desired Output:
Frequency
USA 3
UK 2
China 2
Canada 1
Australia 1
どうすればこれを達成できますか?国でラベルを作成し、それをインデックスとして割り当てると、うまくいくかもしれません。ただし、私が練習している元のデータには行が多すぎるため、ラベルリストを作成することはできません。どんなアイデアでも大歓迎です。
編集:これがどのように好きか見てみましょう!
c1 = pd.DataFrame(c1.values, index=c1.index.values, columns=['Frequency'])
print(c1)
Frequency
USA 3
UK 2
China 2
Canada 1
Australia 1
c1.values
(私たちの目的では)ほぼ同等ですが、np.array(c1)
numpyをインポートする必要はありません。
元の応答(完全には機能しません、後世のために残されています):あなたはおそらくset_index
方法を探しています。
これは次のように機能するはずです。
c1 = df.groupby(df['Country'], as_index=True, sort=False, group_keys=True).size()
c2 = c1.set_index(['Country'])
これがあなたのために働くかどうか私に知らせてください!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加