在忽略几行的同时在DataFrame上使用.loc
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在忽略几行的同时在DataFrame上使用.loc相关的知识,希望对你有一定的参考价值。
我有一个需要根据列值之一进行修改的DataFrame。特别是,当a
列中的值大于110时,我希望为b
列分配-99的值。唯一的问题是数据帧的前3行包含字符串和数字数据类型的混合,因此当我尝试时:
df.loc[df['a'] >= 110, 'b'] = -99
我得到一个TypeError
,因为不允许在str
和int
之间进行比较。
所以我的问题是:如何在忽略数据帧的前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)
pandas计算dataframe数据行的均值(mean)实战:设置skipna=False则计算行均值时不会忽略NaN值