[英]Replace values that are not INT with 0 in Pandas DataFrame
我在pandas DataFrame
有一個看起來像這樣的列。
----------
|audi_id |
----------
| 1 |
| 2 |
| 3 |
| 4 |
| abc |
-----------
我需要用0替換任何包含字符串值的值。
我目前在這里有這段代碼可以將所有非int
值替換為str
但似乎無法正常工作。 誰能幫忙嗎?
ValueError: Can only tuple-index with a MultiIndex
-
df['test'] = pd.to_numeric(df.audit_id[:, 0], errors='coerce').fillna(0)
我期望的輸出是:
----------
|audi_id |
----------
| 1 |
| 2 |
| 3 |
| 4 |
| 0 |
-----------
df.audit_id[:, 0]
不好。 您需要執行df.loc[:, 'audit_id']
或df.audit_id
df['test'] = pd.to_numeric(df.audit_id, errors='coerce').fillna(0)
也就是說,您可能需要整數而不是float
df['test'] = pd.to_numeric(df.audit_id, errors='coerce').fillna(0, downcast='infer')
假設您有一個像這樣的數據框:
df=pd.DataFrame({'id_a':['a','b','c','d','e'],'sudi_id':[1,2,'abc',4,'efg']})
輸出:
id_a sudi_id
0 123 1
1 234 2
2 345 abc
3 567 4
4 789 efg
跑:
df['sudi_id']=df['sudi_id'].apply(lambda x: x if np.isreal(x) else 0)
輸出:
id_a sudi_id
0 123 1
1 234 2
2 345 0
3 567 4
4 789 0
如果這對您有用,請投票。
使用正則表達式匹配具有大寫或小寫字母的任何行,並將其值設置為0
df['audi_id'] = df['audi_id'].replace(regex='([a-zA-Z])', value=0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.