簡體   English   中英

在忽略幾行的同時在 DataFrame 上使用 .loc

[英]Using .loc on DataFrame while ignoring several rows

我有一個需要根據列值之一進行修改的 DataFrame。 特別是,當a列中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

這似乎確實有效,但顯然這似乎不是正確的方法。

編輯:而且這個方法只是跳過前 3 行,但我真的需要保持原樣。

嘗試:

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

或使用errors='ignore'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM