我有下面這段代碼,但是發生了一些奇怪的事情。當我遇到中間有空格的電話號碼時,電話號碼變成了0。 例如:07777 777777將變成0.
。import pandas as pd
df['Phone_Number'] = df['Phone_Number'] 。 str.replace(r'[^ws]= ', ' ')
df['Phone_Number'] = pd.to_numeric(df['Phone_Number'], errors="coerce") 。 fillna(0).astype('int64').to_frame()
uj5u.com熱心網友回復:
這是預料之中的,因為你不能把中間有空格的字串直接轉換為整數。然而,你可以做以下事情:
這是我的資料包。
這是我的資料幀
df
名為玩具出生的aa
1蝙蝠俠蝙蝠車 1940-04-25 07777 777777
現在使用apply函式:
>>> df["aa"/span>] = df.apply(lambda row: int(row["aa"].replace(" ", ")), axis=1)
>>> df
名為玩具出生的aa
1 蝙蝠俠蝙蝠車 1940-04-25 7777777777
>>>
正如你所看到的,你可以讓你的電話號碼轉換為整數。另外,如果你想明確地int64那么:
df["aa"] = df.apply(lambda row: np. int64(row["aa"].replace(" ", ")),axis=1)
uj5u.com熱心網友回復:
當使用coerce引數時,Pandas to_numeric設定無效的決議為NaN。fillna然后用0替換NaN值。
在你的情況下,電話號碼中的空格將導致決議失敗,并回傳NaN,然后用0來替換。
我認為您不能使用 regexp 與replace。你可以直接傳遞子串或你想過濾掉的字符:
"0777 777777".replace(' ', ' ')
或者如果你確實需要使用regex:
import re
re.sub(r's ','',"0777 777777")
uj5u.com熱心網友回復:
你可以像下面這樣使用apply:
import pandas as pd
df = pd.DataFrame({
'Phone_Number': ['0777 777777', ' 07777 777', ' 07 777 777' ]})
df['Phone_Number'] = df['Phone_Number'] 。 apply(lambda x : x.replace(' ', ' ')
# 或
# df['Phone_Number'] = df['Phone_Number'].apply(lambda x : ''.join(x.split() ))
print(df)
輸出:
Phone_Number
0 0777777 7777
1 0777777777777
2 0777777777777
uj5u.com熱心網友回復:
你可以簡化@user1740577所提供的解決方案 因為不需要使用apply-function。只要像這樣使用pandas str.replace()即可:
df['Phone_Number'] = df['Phone_Number'] 。 str.replace(' ', ' ')
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/307874.html
標籤:
下一篇:在WPF的不同類之間共享數值
