マルチインデックスデータフレームのインデックス値をPythonの単純なリストとして抽出します

ラウール・アフージャ

pandasデータフレームからインデックス値を抽出し、それらを新しいデータフレームの列として追加したいと思います。しかし、Pythonは、抽出されたインデックスが、抽出元のデータフレームとして構造(行x列)を持っていることを示すエラーをスローします。

データフレームのインデックス値を、通常のリストとして使用できる単純なリストとして抽出するにはどうすればよいですか?

エラー:

ValueError: Shape of passed values is (10, 1), indices imply (10, 10)

私が試したこと:

## 1
pd.DataFrame(subset_df.index, subset_df[var], percentiles, percentiles_main)

## 2
ix = subset_df.index.get_level_values('College').tolist()
pd.DataFrame(ix, subset_df[var], percentiles, percentiles_main)

## 3
ix =  [i for i in subset_df.index.get_level_values('College')]
pd.DataFrame(ix, subset_df[var], percentiles, percentiles_main)

## 4
ix =  [i for i in subset_df.index.get_level_values('College').values]

## 5
ix =  [i for i in subset_df.index.get_level_values('College').values.tolist()]

## 6
ix =  subset_df.index.get_level_values('College').to_numpy()

## 7
ix = [i for i in subset_df.index.get_level_values('College').array]

## 8
pd.DataFrame(pd.IndexSlice[ix], percentiles, percentiles_main)

## 9
import operator
index = subset_df.index.tolist()
desired_index = list(set(map(operator.itemgetter(1), index)))
pd.DataFrame(desired_index, ptiles, ptiles_main)

上記のすべてのアプローチで同じValueErrorが発生しました。

問題を再現するには:

import numpy as np
import pandas as pd

# Import data
url = "https://statlearning.com/College.csv"
dfo = pd.read_csv(url)
dfo.head(1)

# Add college names as 2nd index
df = dfo.set_index('Unnamed: 0', append=True)
df.rename_axis(index=['SN', 'College'], inplace=True)

# Created a subset of dataframe
subset_df = df.sort_values(by='Top10perc', axis=0, ascending=False)[0:10]
subset_df

# Calculation of percentiles
from scipy.stats import percentileofscore as prtl
ptiles_main = [round(prtl(df['Top10perc'],i,'weak'),2) for i in subset_df['Top10perc']]
ptiles = [round(prtl(df['Grad.Rate'],i,'weak'),2) for i in subset_df['Grad.Rate']]

# Creating a new dataframe with college names and percentiles
## this is where I'm getting ValueError
pd.DataFrame(subset_df.index.get_level_values('College').values.tolist(), ptiles, ptiles_main)
#> ValueError: Shape of passed values is (10, 1), indices imply (10, 10)

# this is the output without trying to add index
pd.DataFrame(ptiles, ptiles_main)
#             0
# 100.00  94.98
# 99.87   76.06
# 99.87   99.87
# 99.87   98.58
# 99.49   97.30
# 99.49   98.58
# 99.49   99.87
# 99.10   61.39
# 98.97   97.94
# 98.97   97.30

必要な出力: ここに画像の説明を入力してください

私の質問には2つの部分があります:(
より重要な部分)
1)通常のリストを使用できるあらゆる方法で使用できる単純なリストとしてデータフレームのインデックス値を抽出する方法

(二次部分)
2)ptile_dfに大学名を追加する方法

gyaan.anveyshak

データフレームを作成しようとしている方法が原因でエラーが発生しています。この方法で試してください:

pd.DataFrame({'College':subset_df.index.get_level_values('College').tolist(), 
              'Grad.Rate':subset_df['Grad.Rate'].values,
              'Percentile':ptiles, 'Percentile_main':ptiles_main})

または

ptile_df = pd.concat([pd.Series(subset_df.index.get_level_values('College')), 
           pd.Series(subset_df['Grad.Rate'].values), pd.Series(ptiles), 
           pd.Series(ptiles_main)], axis=1)
ptile_df.columns = ['College','Grad.Rate','Percentile','Percentile_main']

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

インデックスのリストを指定して、マルチインデックスデータフレームからデータを取得します

分類Dev

パンダのマルチインデックスデータフレームを、すべてのインデックスが列に含まれる単純なデータフレームに変換します

分類Dev

マルチインデックスデータフレームとしてリスト値を持つ辞書

分類Dev

マルチインデックスデータフレームからデータのサブセットを抽出し、列の差を計算します

分類Dev

マルチインデックスデータフレームのインデックスの値が重複しているのはなぜですか?

分類Dev

あるデータフレームの列値を別のデータフレームのインデックスにマップし、値を抽出します

分類Dev

パンダは、別の単一インデックスデータフレームに基づいてマルチインデックスデータフレームをクエリします

分類Dev

マルチインデックスとサインルインデックスのデータフレームを乗算します

分類Dev

高度なパンダ:特定の行インデックスからマルチインデックスパンダデータフレームを作成します

分類Dev

パンダの別のデータフレームの列と等しいインデックス値を持つマルチレベルインデックスデータフレームの行を選択します

分類Dev

Pandasマルチインデックスデータフレームのセル値を文字列として返します

分類Dev

Pandasマルチインデックスデータフレームの行をインデックス値で連結します

分類Dev

インデックス値が存在しない場合、マルチインデックスデータフレームで値を伝播します

分類Dev

マルチインデックス付きのデータフレームフィルター:値フィルターを指定して、最上位のインデックスレベルですべての行を返します

分類Dev

ベクトル内の行ごとの列インデックスを使用して、データフレームから値を抽出する

分類Dev

マルチデータフレームを1つのマルチインデックスデータフレームとしてマージ

分類Dev

ベクトルのリストを列インデックスとして使用して、データフレームを列ごとに分割します

分類Dev

パンダのデータフレームをピボットして、マルチインデックスの列を作成します

分類Dev

Pandasデータフレームの行を反復処理して、他のファイルの値を見つけ、インデックスを抽出します

分類Dev

マルチレベルインデックスを使用してPandasデータフレームでグループ化とローリングウィンドウを実行すると、インデックスエントリが重複します

分類Dev

python pandas:マルチインデックスデータフレームの単一列ラベルの名前を変更します

分類Dev

2レベルのマルチイデックスシリーズをデータフレームに再グループ化して、2番目のレベルのインデックスが名前になるようにしますか?

分類Dev

マルチインデックスパンダデータフレーム内の値の発生をカウントする最も簡単な方法

分類Dev

カスタムソートを使用したPythonでのマルチインデックスヘッダーデータフレームのスライス

分類Dev

マルチインデックスデータフレームで単一の非nan値を検索します

分類Dev

パンダ:マルチインデックスデータフレームのNaNを削除して、多くの行を1つの行にまとめます

分類Dev

リストデータフレームのデータフレームインデックスとして列値を使用していますか(マップまたはseq_alongとのラップ)?

分類Dev

pandas データフレームのカテゴリ値としてインデックス値を使用する

分類Dev

1レベルのインデックスのみを使用したマルチインデックスデータフレームの値の設定

Related 関連記事

  1. 1

    インデックスのリストを指定して、マルチインデックスデータフレームからデータを取得します

  2. 2

    パンダのマルチインデックスデータフレームを、すべてのインデックスが列に含まれる単純なデータフレームに変換します

  3. 3

    マルチインデックスデータフレームとしてリスト値を持つ辞書

  4. 4

    マルチインデックスデータフレームからデータのサブセットを抽出し、列の差を計算します

  5. 5

    マルチインデックスデータフレームのインデックスの値が重複しているのはなぜですか?

  6. 6

    あるデータフレームの列値を別のデータフレームのインデックスにマップし、値を抽出します

  7. 7

    パンダは、別の単一インデックスデータフレームに基づいてマルチインデックスデータフレームをクエリします

  8. 8

    マルチインデックスとサインルインデックスのデータフレームを乗算します

  9. 9

    高度なパンダ:特定の行インデックスからマルチインデックスパンダデータフレームを作成します

  10. 10

    パンダの別のデータフレームの列と等しいインデックス値を持つマルチレベルインデックスデータフレームの行を選択します

  11. 11

    Pandasマルチインデックスデータフレームのセル値を文字列として返します

  12. 12

    Pandasマルチインデックスデータフレームの行をインデックス値で連結します

  13. 13

    インデックス値が存在しない場合、マルチインデックスデータフレームで値を伝播します

  14. 14

    マルチインデックス付きのデータフレームフィルター:値フィルターを指定して、最上位のインデックスレベルですべての行を返します

  15. 15

    ベクトル内の行ごとの列インデックスを使用して、データフレームから値を抽出する

  16. 16

    マルチデータフレームを1つのマルチインデックスデータフレームとしてマージ

  17. 17

    ベクトルのリストを列インデックスとして使用して、データフレームを列ごとに分割します

  18. 18

    パンダのデータフレームをピボットして、マルチインデックスの列を作成します

  19. 19

    Pandasデータフレームの行を反復処理して、他のファイルの値を見つけ、インデックスを抽出します

  20. 20

    マルチレベルインデックスを使用してPandasデータフレームでグループ化とローリングウィンドウを実行すると、インデックスエントリが重複します

  21. 21

    python pandas:マルチインデックスデータフレームの単一列ラベルの名前を変更します

  22. 22

    2レベルのマルチイデックスシリーズをデータフレームに再グループ化して、2番目のレベルのインデックスが名前になるようにしますか?

  23. 23

    マルチインデックスパンダデータフレーム内の値の発生をカウントする最も簡単な方法

  24. 24

    カスタムソートを使用したPythonでのマルチインデックスヘッダーデータフレームのスライス

  25. 25

    マルチインデックスデータフレームで単一の非nan値を検索します

  26. 26

    パンダ:マルチインデックスデータフレームのNaNを削除して、多くの行を1つの行にまとめます

  27. 27

    リストデータフレームのデータフレームインデックスとして列値を使用していますか(マップまたはseq_alongとのラップ)?

  28. 28

    pandas データフレームのカテゴリ値としてインデックス値を使用する

  29. 29

    1レベルのインデックスのみを使用したマルチインデックスデータフレームの値の設定

ホットタグ

アーカイブ