簡體   English   中英

在Pandas DataFrame中將非INT的值替換為0

[英]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.

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