python - 如何删除具有某些第一级和第二级索引的多行?

标签 python pandas dataframe

我有一个数据框,其中:

                 columnA  columnB
name timestamp      x        x

要在多索引数据框中删除一行,我有这个:

df.drop(my_timestamp, level=1, axis=0, inplace=True)
  1. 如何删除具有特定“名称”和“时间戳”索引的一行

  2. 如何为一个名称时间戳列表删除多个行?

最佳答案

我将根据以下数据框示例提供答案(您实际上必须提供一个):

                          columnA columnB
NameA 2016-01-01 12:00:00       p       a
      2017-01-01 12:00:00       q       b
NameB 2018-01-01 12:00:00       r       c
NameC 2019-01-01 12:00:00       s       d

how can I drop one row with a certain 'name' and 'timestamp' index?

假设您想使用“NameA”删除名称,使用“2017-01-01 12:00:00”删除时间戳,那么您可以使用:

df.drop(('NameA', pd.Timestamp(2017, 1, 1, 12)), axis=0)

输出:

                          columnA columnB
NameA 2016-01-01 12:00:00       p       a
NameB 2018-01-01 12:00:00       r       c
NameC 2019-01-01 12:00:00       s       d

how can I drop multiple rows for one name and a list of timestamps?

您可以使用 pd.MultiIndex.from_product创建一个要删除的多索引。

示例:您想删除“NameA”的两个时间戳:

df.drop(
    pd.MultiIndex.from_product([
        ['NameA'], 
        [pd.Timestamp(2016, 1, 1, 12), pd.Timestamp(2017, 1, 1, 12)]]),
    axis=0
)

输出:

                          columnA columnB
NameB 2018-01-01 12:00:00       r       c
NameC 2019-01-01 12:00:00       s       d

关于python - 如何删除具有某些第一级和第二级索引的多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73367155/

相关文章:

python - 跨平台视频录制解决方案

python - 以值为条件将列名加入新的 pandas 列中

python - 如何使用 python 更改 matplotlib 中 x 轴值的日期时间格式?

python - 为什么 polars 被称为最快的 dataframe 库,dask 和 cudf 不是更强大吗?

python - 在 Windows 上使用 pip 安装 scipy 时出现问题?

python - Windows 中 Tensorflow 的 cuda_dnn 错误 : "could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED"

python - 考虑传递等价性的无向图中高效寻找连通分量

python - 对 Pandas 数据框中的行对应用函数

Python Dataframe-如何对包含年、月、日数据的三个不同列进行分组,并从第四列计算总和

python - 在 Pandas 数据框中设置多索引列的顺序