在忽略几行的同时在DataFrame上使用.loc

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在忽略几行的同时在DataFrame上使用.loc相关的知识,希望对你有一定的参考价值。

我有一个需要根据列值之一进行修改的DataFrame。特别是,当a列中的值大于110时,我希望为b列分配-99的值。唯一的问题是数据帧的前3行包含字符串和数字数据类型的混合,因此当我尝试时:

df.loc[df['a'] >= 110, 'b'] = -99

我得到一个TypeError,因为不允许在strint之间进行比较。

所以我的问题是:如何在忽略数据帧的前3行的同时进行此分配?

到目前为止,我想出了一种相当狡猾的方式:

try:
    df.loc[df['a'] >= 110, 'b'] = -99
except TypeError:
    pass

这似乎确实有效,但显然似乎不是执行此操作的正确方法。

编辑:而且此方法仅跳过前三行,但我确实需要保持它们原样。

答案

尝试:

df.loc[df['a'].apply(pd.to_numeric, errors='coerce').ge(110), 'b'] = -99

或使用errors='ignore'

以上是关于在忽略几行的同时在DataFrame上使用.loc的主要内容,如果未能解决你的问题,请参考以下文章

pandas使用loc函数更新修改dataframe指定数据行的内容(update or change the content of specific row of dataframe)

Python pandas 按行按列遍历DataFrame

dataframe

pandas计算dataframe数据行的均值(mean)实战:设置skipna=False则计算行均值时不会忽略NaN值

Python创建空DataFrame及添加行数据

使用 loc 方法获取 DataFrame 的视图