質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

6792閲覧

データフレームをgroupbyで抽出した後に、複数列を選択したい。

H.K2

総合スコア88

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/06/24 02:38

【やりたいこと】
以前、あるデータフレームから、一部を抜き出す方法をご教示いただいたと思うのですが、そのDFに対し、特定の列のインデックスをキーとしてグループ化し、その結果を複数列選択してexcelに出力したいと考えています。

【やってみたこと】
以前ご教示いただいたコードをもとに書いてみました。(実際のデータはもっと複雑なのですが)
ですが、下記ができなくて困っております。
①groupbyを、列名では実施できるのですが、列のインデックス(抽出後のdfのx列目)では抽出できなかった。
②groupbyしたものに対し、複数列を抽出しようとしたが、選択できなかった。
(ilocなどでスライスをかけてやることは不可能?)

python3

1import pandas as pd 2import numpy as np 3df = pd.DataFrame(np.arange(30).reshape(3,10),columns=list("abcdefghij")) 4index_of_c = list(df.columns).index("c") 5df.iloc[:,index_of_c:index_of_c+5] 6 7#ここから。 8gb = df.groupby("d") # ここは本当は2列目で、groupbyしたい 9 10d_df = gb.iloc[:,0:2].sum() # ここでエラーが出る(groupbyしたら、ilocで抽出できない?) 11 12#抽出したものをexcelで掃き出し(ここはできた) 13

いくつかWebサイトを検索して真似してみたのですが、どうもうまくいきません。
お手数をおかけいたしますが、ご教示いただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

d_df = gb.iloc[:,0:2].sum() # ここでエラーが出る(groupbyしたら、ilocで抽出できない?)

gb.iloc[:,0,2]を実行しようとすると次のようなエラーが出ると思います:

Cannot access callable attribute 'iloc' of 'DataFrameGroupBy' objects, try using the 'apply' method

答えはここにあるのではないでしょうか。ilocは使えないからapply使ってみたら、と書いてあります。

質問を読んでも結局のところどういう結果を期待しているのかがいま一つ分からないのですが、sumをとりたいなら、普通はgb.sum()ではないでしょうか。これとは違う何かを期待しているなら質問を適切に補足していただきたいと思います。

投稿2018/06/24 04:48

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

H.K2

2018/06/24 07:45

ご回答ありがとうございます。 記載が分かりにくく申し訳ありません。 groupby()の抽出方法がよくわかっていなかったため、エラーにはまってしまっていました。。。
guest

0

自己解決

すみません。
自己解決しました。

下記のようにgroupbyのaggを設定したらやりたいことが解決いたしました。

gb = df.groupby("d").agg({list(df.columns)[2]:"sum",list(df.columns)[4]:"sum"}) print(gb.columns) print(type(gb)) dir(gb) #print(gb[["c","e"]].get_group("d")) gb

#普通にリストに変換できるので、その部分を名前に変換すればよかっただけですね…。
お騒がせいたしました。

投稿2018/06/24 07:47

H.K2

総合スコア88

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問