RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1113829
Accepted
onetwoonexu
onetwoonexu
Asked:2020-04-22 15:00:51 +0000 UTC2020-04-22 15:00:51 +0000 UTC 2020-04-22 15:00:51 +0000 UTC

多索引删除

  • 772

有一个数据框:

我选择对应于HEATID_id = 1079571: 的索引子集data.loc[1079571],我得到了这个 DataFrame 的索引列表:

ind = data.loc[1079571].index

在此处输入图像描述

我想删除索引'2020-03-20 12:57:00'对应于ind[0]原始DataFrame的元素,我这样做是这样的:data.loc[1079571].drop(ind[0], inplace=True),但原始元素data保留在原地。

我知道如果我写data.drop((1079571, '2020-03-20 12:57:00'), inplace=True),元素将被删除,但是我循环遍历 DataFrame,并且根据某些条件,我必须删除日期属于某些 ID 的子下标。

怎么做才对?

样本数据:

ind = [np.array([1, 1, 2, 2, 3, 3, 4, 4]),
             np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])]

df = pd.DataFrame(np.random.randn(8, 3), index=ind, columns=['col1', 'col2', 'col3'])
pandas
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    MaxU - stop genocide of UA
    2020-04-22T15:58:53Z2020-04-22T15:58:53Z

    首先,为方便起见,我将为多索引的列命名:

    In [6]: df = df.rename_axis(("HEATID_id", "DATETIME"))
    
    In [7]: df
    Out[7]:
                            col1      col2      col3
    HEATID_id DATETIME
    1         one      -0.273237  0.238934  0.170942
              two      -1.014915 -1.861040  1.438298
    2         one       1.768788 -1.867217  2.228290
              two      -0.223731  0.510522 -0.339987
    3         one      -0.692861  0.058985 -1.029659
              two      -0.914700 -2.383052 -0.423476
    4         one      -0.983865  1.493552  0.261097
              two      -1.380589 -0.192062 -0.220487
    

    解决方案:

    设置我们将删除数据的索引值的变量:

    In [8]: idx1, idx2 = 1, "two"
    

    获取我们要删除的行对应的多索引值:

    In [9]: idx2drop = df.query('HEATID_id == @idx1 and DATETIME == @idx2').index
    

    删除行:

    In [10]: res = df.drop(idx2drop)
    

    结果:

    In [11]: res
    Out[11]:
                            col1      col2      col3
    HEATID_id DATETIME
    1         one      -0.273237  0.238934  0.170942
    2         one       1.768788 -1.867217  2.228290
              two      -0.223731  0.510522 -0.339987
    3         one      -0.692861  0.058985 -1.029659
              two      -0.914700 -2.383052 -0.423476
    4         one      -0.983865  1.493552  0.261097
              two      -1.380589 -0.192062 -0.220487
    

    PS此方法还允许您使用列表:

    idx1 = [1,4]
    idx2 = "two"
    
    idx2drop = df.query('HEATID_id in @idx1 and DATETIME == @idx2').index
    res = df.drop(idx2drop)
    

    In [18]: res
    Out[18]:
                            col1      col2      col3
    HEATID_id DATETIME
    1         one      -0.392229  0.150130 -0.870317
    2         one      -1.383410  0.038539 -1.505904
              two       0.783348  0.456165 -2.698035
    3         one       2.290064  1.275575  0.055193
              two      -0.138148  0.730962 -1.987691
    4         one      -2.215016  0.763966 -1.618045
    
    • 3

相关问题

  • 创建 pandas 多索引

  • Pandas.Series 在单元格中

  • 获取熊猫周数

  • pandas DataFrames 聚合最小最大均值

  • 更改熊猫中的部分行

  • 训练模型时loss和acc的值相同

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5