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

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

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

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

Q&A

解決済

2回答

412閲覧

Pandasの要素をラベルリストに対応させて抽出

gymgym

総合スコア97

Python 3.x

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

0グッド

0クリップ

投稿2018/05/16 03:09

x_df 0 1 2 3 4 5 6 7 0 -7608.00 -7608.00 -7608.00 -7608.00 -7608.00 -7608.00 -7608.00 -7608.00 1 -7502.61 -7502.61 -7502.61 -7502.61 -7502.61 -7502.61 -7502.61 -7502.61 2 -7264.54 -7264.54 -7264.54 -7264.54 -7264.54 -7264.54 -7264.54 -7264.54 3 -7322.23 -7322.23 -7322.23 -7322.23 -7322.23 -7322.23 -7322.23 -7322.23 4 -7606.57 -7606.57 -7606.57 -7606.57 -7606.57 -7606.57 -7606.57 -7606.57 5 -7552.79 -7552.79 -7552.79 -7552.79 -7552.79 -7552.79 -7552.79 -7552.79 6 -7313.62 -7313.62 -7313.62 -7313.62 -7313.62 -7313.62 -7313.62 -7313.62 7 -7288.97 -7288.97 -7288.97 -7288.97 -7288.97 -7288.97 -7288.97 -7288.97 8 -7544.70 -7544.70 -7544.70 -7544.70 -7544.70 -7544.70 -7544.70 -7544.70
list0 = [2, 2, 0, 1, 2, 1, 1, 0]

以上のようなデータフレームからlist0のラベルに対応させて列を抽出したいと考えています。

例)0に対応する列は2と7の列なので、

   2   7 0 -7608.00 -7608.00 1 -7502.61 -7502.61 2 -7264.54 -7264.54 3 -7322.23 -7322.23 4 -7606.57 -7606.57 5 -7552.79 -7552.79 6 -7313.62 -7313.62 7 -7288.97 -7288.97 8 -7544.70 -7544.70

以上のように列を抽出したいと考えています。

Python

1list0 = [2, 2, 0, 1, 2, 1, 1, 0] 2 3for i in range(10): 4 x = gov_df[0].ix[1:10,0] 5 x = np.array(x) 6 x_df[i] = x 7 8print(x_df) 9 10#以下だと行の抽出になってしまいます 11x_df['label'] = list0 12 13a = x_df[x_df01['label'] == 0] 14a = x_df[x_df01['label'] == 1] 15c = x_df[x_df01['label'] == 2]

よろしくお願いいたします

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

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

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

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

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

guest

回答2

0

こうゆうことですか?

x_df.loc[:,pd.Series(list0) == 0]

以下サンプル

Python

1import pandas as pd 2 3x_df = pd.DataFrame( 4 [[-7608.00,-7608.00,-7608.00,-7608.00,-7608.00,-7608.00,-7608.00,-7608.00], 5 [-7502.61,-7502.61,-7502.61,-7502.61,-7502.61,-7502.61,-7502.61,-7502.61], 6 [-7264.54,-7264.54,-7264.54,-7264.54,-7264.54,-7264.54,-7264.54,-7264.54], 7 [-7322.23,-7322.23,-7322.23,-7322.23,-7322.23,-7322.23,-7322.23,-7322.23], 8 [-7606.57,-7606.57,-7606.57,-7606.57,-7606.57,-7606.57,-7606.57,-7606.57], 9 [-7552.79,-7552.79,-7552.79,-7552.79,-7552.79,-7552.79,-7552.79,-7552.79], 10 [-7313.62,-7313.62,-7313.62,-7313.62,-7313.62,-7313.62,-7313.62,-7313.62], 11 [-7288.97,-7288.97,-7288.97,-7288.97,-7288.97,-7288.97,-7288.97,-7288.97], 12 [-7544.70,-7544.70,-7544.70,-7544.70,-7544.70,-7544.70,-7544.70,-7544.70]]) 13list0 = [2, 2, 0, 1, 2, 1, 1, 0] 14 15 16print(x_df.loc[:,pd.Series(list0) == 0]) 17# 2 7 18#0 -7608.00 -7608.00 19#1 -7502.61 -7502.61 20#2 -7264.54 -7264.54 21#3 -7322.23 -7322.23 22#4 -7606.57 -7606.57 23#5 -7552.79 -7552.79 24#6 -7313.62 -7313.62 25#7 -7288.97 -7288.97 26#8 -7544.70 -7544.70

投稿2018/05/16 04:20

magichan

総合スコア15898

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

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

0

ベストアンサー

numpy使ったらできましたが、pandas的に最善手かどうかはよくわかりません。もっとうまい書き方があるかも。

python

1import numpy as np 2import pandas as pd 3 4df = pd.DataFrame([ 5[-7608.00, -7608.00, -7608.00, -7608.00, -7608.00, -7608.00, -7608.00, -7608.00], 6[-7502.61, -7502.61, -7502.61, -7502.61, -7502.61, -7502.61, -7502.61, -7502.61], 7[-7264.54, -7264.54, -7264.54, -7264.54, -7264.54, -7264.54, -7264.54, -7264.54], 8[-7322.23, -7322.23, -7322.23, -7322.23, -7322.23, -7322.23, -7322.23, -7322.23], 9[-7606.57, -7606.57, -7606.57, -7606.57, -7606.57, -7606.57, -7606.57, -7606.57], 10[-7552.79, -7552.79, -7552.79, -7552.79, -7552.79, -7552.79, -7552.79, -7552.79], 11[-7313.62, -7313.62, -7313.62, -7313.62, -7313.62, -7313.62, -7313.62, -7313.62], 12[-7288.97, -7288.97, -7288.97, -7288.97, -7288.97, -7288.97, -7288.97, -7288.97], 13[-7544.70, -7544.70, -7544.70, -7544.70, -7544.70, -7544.70, -7544.70, -7544.70]]) 14 15print(df) 16list0 = np.array([2, 2, 0, 1, 2, 1, 1, 0]) 17index = np.arange(len(list0)) 18print(df[index[list0 == 0]]) 19 20""" => 21 0 1 2 3 4 5 6 7 220 -7608.00 -7608.00 -7608.00 -7608.00 -7608.00 -7608.00 -7608.00 -7608.00 231 -7502.61 -7502.61 -7502.61 -7502.61 -7502.61 -7502.61 -7502.61 -7502.61 242 -7264.54 -7264.54 -7264.54 -7264.54 -7264.54 -7264.54 -7264.54 -7264.54 253 -7322.23 -7322.23 -7322.23 -7322.23 -7322.23 -7322.23 -7322.23 -7322.23 264 -7606.57 -7606.57 -7606.57 -7606.57 -7606.57 -7606.57 -7606.57 -7606.57 275 -7552.79 -7552.79 -7552.79 -7552.79 -7552.79 -7552.79 -7552.79 -7552.79 286 -7313.62 -7313.62 -7313.62 -7313.62 -7313.62 -7313.62 -7313.62 -7313.62 297 -7288.97 -7288.97 -7288.97 -7288.97 -7288.97 -7288.97 -7288.97 -7288.97 308 -7544.70 -7544.70 -7544.70 -7544.70 -7544.70 -7544.70 -7544.70 -7544.70 31 2 7 320 -7608.00 -7608.00 331 -7502.61 -7502.61 342 -7264.54 -7264.54 353 -7322.23 -7322.23 364 -7606.57 -7606.57 375 -7552.79 -7552.79 386 -7313.62 -7313.62 397 -7288.97 -7288.97 408 -7544.70 -7544.70 41""" 42

投稿2018/05/16 03:16

編集2018/05/16 03:18
hayataka2049

総合スコア30933

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問