0
点赞
收藏
分享

微信扫一扫

MultiIndex筛选 避免筛选结果是Series

李雨喵 2023-10-12 阅读 34

# 案例1
df_test = pd.DataFrame(
    data=[
        ['a'],
        ['A', 'B', 'B'],
        range(1,3)
    ],
    index=['col' + str(i) for i in range(1,4)]
).T.fillna(method='ffill').set_index(['col1', 'col2'])

# df_test筛选col1==a且col2==A的行
df_test_2 = df_test.loc[('a', 'A')]  # pandas.core.frame.DataFrame

# 根据df_test_2的索引筛选df_test
df_test.loc[df_test_2.index]  # DataFrame.index,且两个表的索引列一一对应,正确


# 案例2
df_test = pd.DataFrame(
    data=[
        ['a'],
        ['A', 'B'],
        range(1,3)
    ],
    index=['col' + str(i) for i in range(1,4)]
).T.fillna(method='ffill').set_index(['col1', 'col2'])

# df_test筛选col1==a且col2==A的行
df_test_2 = df_test.loc[('a', 'A')]  # pandas.core.series.Series  # Name: (a, A)

# 根据df_test_2的索引筛选df_test
# df_test.loc[df_test_2.index]  # KeyError: "Index(['col3'], dtype='object') not in index"
# Index(['col3'], dtype='object')
# 解决办法: 避免筛选结果是Series
df_test_2 = df_test.loc[[('a', 'A')]]  # pandas.core.frame.DataFrame
df_test.loc[df_test_2.index]

举报

相关推荐

0 条评论