【发布时间】:2018-05-28 04:36:13
【问题描述】:
好的,所以我有一个带有 2 列索引的 DataFrame,我正在尝试过滤该 DataFrame 中的行,并仅将原始数据帧的索引列保留到新的过滤 DataFrame 中。
我通过以下方式从 CSV 文件创建了数据框:查找 CSV 文件 here
census_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 个索引列。我想要的只是两个索引列。 因此,最终答案应该返回一个 DATAFRAME,其中包含“STNAME”和“CTYNAME”,其中包含 5 行。
【问题讨论】:
-
你想用
return pd.DataFrame(new_df.iloc[:, 0])代替return new_df.reset_index()吗? -
@jezrael 不,不起作用。它返回所有我不想要的列。我只想要列“STNAME”和“CTYNAME”。另外,我不只是希望它们作为列。我希望它们作为索引,也是一种排序方式。
标签: python-3.x pandas dataframe multi-index