質問のコードにて何故データを抽出できるのか、出来ないのかの説明は hayataka2049 さんが回答されている通りとなります。
ですので、私の回答は補足となります。
pandas.Index
クラスには get_loc()
という Index名(Column名)から対応するIndex値を取得するmethodがありますので、以下のように ilocで列指定する際にこれを使用する方法もあります。
Python
1csv_titanic.iloc[:, csv_titanic.columns.get_loc("Age")]
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Index.get_loc.html
データをフィルタリングする際に、列の指定をBoolean配列で行った場合の結果は DataFrame型で得られますが、この方法の場合は数値('Index値')で指定することになるので、結果は Series型となります。
Python
1import pandas as pd
2import numpy as np
3
4# ダミーデータ生成
5df =pd.DataFrame(np.arange(9).reshape((3,3)), columns=['A','B','C'])
6# A B C
7#0 0 1 2
8#1 3 4 5
9#2 6 7 8
10
11# 以下のように比較演算によってBoolean配列が得られる
12print(df.columns == 'B')
13# [False True False]
14
15# 列の指定値としてBoolean値の配列を渡す場合
16#( 結果はDataFrameで得られる )
17print(df.iloc[:, df.columns == 'B'])
18# B
19# 0 1
20# 1 4
21# 2 7
22
23# カラム名に対応したIndex値を得る方法
24print(df.columns.get_loc('B'))
25# 1
26
27# Index値を渡すことでもフィルタリングする
28#( 結果はSeriesで得られる )
29print(df.iloc[:, df.columns.get_loc('B')])
30# 0 1
31# 1 4
32# 2 7
33# Name: B, dtype: int64
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/06 14:44