Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在DataFrame上使用.loc,同时忽略几行_Python_Pandas_Dataframe - Fatal编程技术网

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

Python 在DataFrame上使用.loc,同时忽略几行,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框,需要根据其中一个列值进行修改。特别是,当列a中的值高于110时,我希望将列b的值赋值为-99。唯一的问题是dataframe的前3行包含字符串和数字数据类型的混合,因此当我尝试时: df.loc[df['a'] >= 110, 'b'] = -99 我得到一个TypeError,因为不允许在str和int之间进行比较 所以我的问题是:如何在忽略数据帧的前3行的情况下完成这个赋值 到目前为止,我想出了一个相当狡猾的办法: try: df.loc[df['a'] &g

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

df.loc[df['a'] >= 110, 'b'] = -99
我得到一个
TypeError
,因为不允许在
str
int
之间进行比较

所以我的问题是:如何在忽略数据帧的前3行的情况下完成这个赋值

到目前为止,我想出了一个相当狡猾的办法:

try:
    df.loc[df['a'] >= 110, 'b'] = -99
except TypeError:
    pass
这似乎是可行的,但显然这似乎不是正确的方法

编辑:而且这个方法只跳过前3行,但我真的需要保持它们的原样。

试试:

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


或者使用
errors='ignore'

我想保持前三行的数据不变。是否将
应用(pd.to_numeric,errors='coerse')
将数据替换为一堆
NaN
?复制前3行并在该操作后重新追加当我尝试按您建议的方式执行时,我收到一个奇怪的错误:
ValueError:invalid error value specified
。虽然如果我做了
errors='ignore'