2カラムインデックスを持つDataFrameがあるので、そのDataFrameから行をフィルタリングし、元のデータフレームのINDEX列のみを新しいフィルタリング済みのDataFrameに保存しようとしています。 パンダのマルチインデックスデータフレームでインデックス列のみを選択する方法は?
は私がしてCSVファイルからデータフレームを作成しました:CSVはその後 herecensus_df = pd.read_csv("census.csv", index_col = ["STNAME", "CTYNAME"])
census_df.sort_index(ascending = True)
ファイルを検索し、私は完全に正常に動作DATAFRAMEに何らかのフィルタリングを適用し、私は希望の行を取得します。私が使用するコードを以下に示す:ここ
def my_answer():
mask1 = census_df["REGION"].between(1, 2)
mask2 = census_df.index.get_level_values("CTYNAME").str.startswith("Washington")
mask3 = (census_df["POPESTIMATE2015"] > census_df["POPESTIMATE2014"])
new_df = census_df[mask1 & mask2 & mask3]
return pd.DataFrame(new_df.iloc[:, -1])
my_answer()
が問題である。
上記のコードでは、インデックスと2つの索引列に加えて、最初の列とデータフレームを返します。私が望むのは、2つの指標列だけです。 したがって、最終回答では、 "STNAME"と "CTYNAME"という5行のDATAFRAMEが返されます。
あなたは 'pd.DataFrame(new_dfを返す代わりにしたいです。 iloc [:, 0]) 'return new_df.reset_index()'を使用しますか? – jezrael
@jezraelいいえ、動作しません。それは私が望まないすべての列を返します。私はちょうど列 "STNAME"と "CTYNAME"が欲しいです。また、私はそれらを列として望むだけではありません。私は彼らをあまりにも並べ替えの方法で表示したい。 –