【问题标题】:How to use slice to exclude rows and columns from dataframe如何使用切片从数据框中排除行和列
【发布时间】:2022-08-13 20:45:17
【问题描述】:

我有一个数据框

import pandas as pd
import numpy as np

index = pd.MultiIndex.from_product([[\"A\", \"B\"], [\"AA\", \"BB\"]])
columns = pd.MultiIndex.from_product([[\"X\", \"Y\"], [\"XX\", \"YY\"]])

df = pd.DataFrame([[1,2,3,4],
                   [5,6,7,8],
                   [9,10,11,12],
                   [13,14,15,16]], index = index, columns = columns)

和切片

toSkip = ((slice(None), slice(None)), ([\"X\"], slice(None)))

我知道我可以写df.loc[slice] 来获得DataFrame 的子集,它对应于这个切片。但是我该怎么做相反的事情才能得到原始df 和用该切片获得的区别?

  • 你的预期输出是什么?

标签: python pandas


【解决方案1】:

如果slice 是具有布尔值的系列,则逻辑否定运算符~ 将给出与条件相反的结果。所以,

df[~slice] 

将返回不满足条件slice 的行

【讨论】:

  • 它不适用于我的 toSkip 切片
【解决方案2】:

不确定这是不是你想要的,你可以droptoSkip数据框的索引和列

toSkip = ((slice(None), slice(None)), (["X"], slice(None)))

tmp = df.loc[toSkip]
out = df.drop(index=tmp.index, columns=tmp.columns)
print(out)

Empty DataFrame
Columns: [(Y, XX), (Y, YY)]
Index: []

【讨论】:

    猜你喜欢
    • 2021-09-12
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多