[英]Using .loc on DataFrame while ignoring several rows
我有一個需要根據列值之一進行修改的 DataFrame。 特別是,當a
列中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
這似乎確實有效,但顯然這似乎不是正確的方法。
編輯:而且這個方法只是跳過前 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.