【问题标题】:Is loc an optional attribute when searching dataframe? [duplicate]搜索数据框时 loc 是可选属性吗? [复制]
【发布时间】:2021-06-09 11:51:10
【问题描述】:

以下两行似乎给出了相同的输出:

df1 = df[df['MRP'] > 1500]
df1 = df.loc[df['MRP'] > 1500]

查找数据框时loc是可选属性吗?

【问题讨论】:

  • “搜索数据框时 loc 是可选属性”是什么意思?在这两个示例中,您要么是从数据帧中过滤,要么是选择。 “搜索”发生在布尔索引df['MRP'] > 1500 的创建中。如果问题是,loc 从 DataFrame 中选择数据时是否可选,答案当然是肯定的和否定的。 loc 具有标准 __getitem__ 所不具备的灵活性,但在简单条件下存在显着重叠。
  • loc 为您提供了一些额外的功能,例如选择某些列:df.loc[df['MRP'] > 1500, ['ColA', 'ColB']]。或者,如果您想在选择后在某个列中分配值:df.loc[df['MRP'] > 1500, 'ColA'] = 10

标签: python pandas


【解决方案1】:

来自Padas.DataFrame.loc 文档:

通过标签或布尔数组访问一组行和列。

.loc[] 主要基于标签,但也可以与布尔值一起使用 数组。

当您使用布尔数组过滤数据时,.loc 是可选的,并且在您的示例中,df['MRP'] > 1500 给出了一个具有真实值的系列,因此在这种情况下没有必要使用.loc

df[df['MRP']>15]
    MRP cat
0    18   A
3    19   D
6    18   C

但是如果你想访问这个布尔系列具有 True 值的其他列,那么你可以使用.loc

df.loc[df['MRP']>15, 'cat']
0     A
3     D
6     C

或者,如果您想更改条件为True 的值:

df.loc[df['MRP']>15, 'cat'] = 'found'

【讨论】:

    猜你喜欢
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多