【问题标题】:Return a boolean mask for a Pandas index wrt a subset of the index根据索引的子集返回 P​​andas 索引的布尔掩码
【发布时间】:2022-07-07 17:27:04
【问题描述】:

我有一个这样的 df:

df = pd.DataFrame(index=["a", "b", "c"], data={"col": [1, 2, 3]})

以及索引的子集:s = ["a", "b"]

我想形成布尔掩码,这样我就可以只更改“a”和“b”行的值,如下所示:

df.loc[m, "col"] = [10, 11]

有没有一种巧妙的方法可以做到这一点?

【问题讨论】:

  • 好像只是一个错字?

标签: python pandas


【解决方案1】:

如果赋值列表与索引列表相同,则使用:

df.loc[s, "col"]  = [10, 11]
print (df)
   col
a   10
b   11
c    3

如果 Index.isin 使用布尔掩码并且列表的顺序不同,例如索引得到不同的输出:

df = pd.DataFrame(index=["a", "b", "c"], data={"col": [1, 2, 3]})
#swapped order
s = ["b", "a"]


m = df.index.isin(s)
df.loc[m, "col"]  = [10, 11]
print (df)
   col
a   10
b   11
c    3

df.loc[s, "col"]  = [10, 11]
print (df)
   col
a   11
b   10
c    3

【讨论】:

    猜你喜欢
    • 2020-01-14
    • 2016-11-22
    • 2018-04-18
    • 2014-02-03
    • 2019-06-01
    • 2019-10-29
    • 2011-11-03
    • 2021-11-16
    • 2019-12-07
    相关资源
    最近更新 更多