pandsを使用して指定された列の値に対応する行を絞り出すことができます。
pandsでは、どうやってmysqlのような検索語句の機能を実現しますか?ブールインデックス 位置インデックス タグインデックス は、API を使用する。
仮説データは以下の通りです
ブール索引
この方法は、各行の条件に合致する真の値(true value)を探して、列Aの中の全ての値がfooに等しいということです。
位置インデックス
iloc法を使用して、インデックスの位置からデータを検索します。この例はまず条件に合った行の位置を見つける必要があります。
ラベル索引
どのようにDataFrameの行列にもラベルが付いていますので、locの方法を使うのがいいです。
APIを使う
データ抽出は前に述べただけではなく、最初の答えは以下のようないくつかの一般的な状況を示しています。
1、選別出列値はスカラーの行に等しく、==
select * from table where column_name = some_value;
パンダスでデータを取得するには、以下のような方法があります。仮説データは以下の通りです
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
'B': 'one one two three two two one three'.split(),
'C': np.arange(8), 'D': np.arange(8) * 2})
ブール索引
この方法は、各行の条件に合致する真の値(true value)を探して、列Aの中の全ての値がfooに等しいということです。
df[df['A'] == 'foo'] #
位置インデックス
iloc法を使用して、インデックスの位置からデータを検索します。この例はまず条件に合った行の位置を見つける必要があります。
mask = df['A'] == 'foo'
pos = np.flatnonzero(mask) # array([0, 2, 4, 6, 7])
df.iloc[pos]
# iloc
df.iloc[:3,1:3]
ラベル索引
どのようにDataFrameの行列にもラベルが付いていますので、locの方法を使うのがいいです。
df.set_index('A', append=True, drop=False).xs('foo', level=1) # xs DataFrame
#
df.index=df['A'] # A DataFrame
df.loc['foo', :]
#
df.loc[df['A']=='foo']
APIを使う
pd.DataFrame.query
方法は、データ量が大きい場合、従来の方法より効率が高い。
df.query('A=="foo"')
#
df.query('A=="foo" | A=="bar"')
データ抽出は前に述べただけではなく、最初の答えは以下のようないくつかの一般的な状況を示しています。
1、選別出列値はスカラーの行に等しく、==
df.loc[df['column_name'] == some_value]
2、列を絞り出す値は、ある範囲の行に属します。isinで
df.loc[df['column_name'].isin(some_values)] # some_values
3、複数の条件が制限されている場合の使用&、&の優先度は>==<=>より高いので、括弧の使用に注意してください。
df.loc[(df['column_name'] >= A) & (df['column_name'] <= B)]
4、列をフィルタする値は、ある/いくつかの値の行に等しくない
df.loc[df['column_name'] != 'some_value']
df.loc[~df['column_name'].isin('some_values')] #~
ここでは、pandsを使って指定された列の値を絞り出すための行に関する記事を紹介します。さらに、pandsフィルタの指定された列の値の内容については、以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。