複数の列でパンダデータフレームをフィルタリングするにはどうすればよいですか? 質問する

複数の列でパンダデータフレームをフィルタリングするにはどうすればよいですか? 質問する

DataFrame (df) を単一の列でフィルタリングするには、男性と女性のデータを考慮すると、次のようになります。

males = df[df[Gender]=='Male']

質問 1: しかし、データが複数年にわたっており、2014 年の男性だけを確認したい場合はどうすればよいでしょうか?

他の言語では、次のようなことをするかもしれません:

if A = "Male" and if B = "2014" then 

(ただし、これを実行して、元の DataFrame のサブセットを新しいデータフレーム オブジェクトに取得したい)

質問 2: これをループで実行し、年と性別の一意のセットごとにデータフレーム オブジェクトを作成するにはどうすればよいですか (つまり、2013-男性、2013-女性、2014-男性、および 2014-女性の df)。

for y in year:

for g in gender:

df = .....

ベストアンサー1

演算子を使用する場合は&、サブステートメントを次のようにラップすることを忘れないでください()

males = df[(df[Gender]=='Male') & (df[Year]==2014)]

dictfor ループを使用して DataFrame を保存するには:

from collections import defaultdict
dic={}
for g in ['male', 'female']:
    dic[g]=defaultdict(dict)
    for y in [2013, 2014]:
        dic[g][y]=df[(df[Gender]==g) & (df[Year]==y)] #store the DataFrames to a dict of dict

デモgetDF:

def getDF(dic, gender, year):
    return dic[gender][year]

print genDF(dic, 'male', 2014)

おすすめ記事