Pandasレシピ

プログラミング

行番号を指定して、インデックスの値を取得

print(df.index[0]) #1行目のインデックスの値を取得

特定の列で、特定の値が含まれている行を抽出

import pandas as pd

# サンプルデータの作成
data = {
    'value': [10, 20, 30, 40, 50, 60],
    'name': ['A', 'B', 'A', 'C', 'A', 'B']
}

#データフレームの作成
df = pd.DataFrame(data)

# カラム名が'name'で、値が'A' に等しい行を抽出
filtered_df = df[df['name'] == 'A']


print(filtered_df)
#出力結果 
 column_name  value
0           A     10
2           A     30
4           A     50

df[‘name’]はSeriesになります。
df[‘name’] == ‘A’もSeriesですが、下記の出力のようなブールシリーズになります。
ブールシリーズを使用することによって、フィルタリングが可能になります。
df[df[‘name’] == ‘A’]

#ブールシリーズ
0     True
1    False
2     True
3    False
4     True
5    False
Name: name, dtype: bool

指定した値がある行から、データフレームへ変換する

file_path = 'your_excel_file.xlsx'
df = pd.read_excel(file_path, header=None)

# A列に特定の値があるセルの行番号を特定します
header_row_index = df[df.iloc[:, 0] == 'value'].index[0] #インデックス番号が返ってくる

# カラム名としてデータフレームを再読み込みます
df = pd.read_excel(file_path, header=header_row_index)

df.iloc[:, 0]
1行目をSeriesで返します。
df[df.iloc[:, 0] == ‘value’]
ブールインデックスで1行目のSeriesの中から’value’が含まれている行をフィルタリングすることできる。
df[df.iloc[:, 0] == ‘value’].index[0]
フィルタリングして取得した行のインデックス番号を取得できる。
pd.read_excel(file_path, header=header_row_index)
エクセル読み込み時に、headerを数値で指定する。