我正在嘗試洗掉資料框中字串中不必要的值,以便我可以將它們設為整數并對它們執行一些數學邏輯。逗號和向上箭頭已根據需要洗掉,但我似乎無法從我的資料框中洗掉 $。但我已經成功地將它從第二行中洗掉,這是一個非常奇怪的例外情況。
import pandas as pd
from urllib.request import Request, urlopen
req = Request('https://smallcaps.com.au/director-transactions/'
, headers={'User-Agent': 'Mozilla/5.0'})
trades = urlopen(req).read()
df = pd.read_html(trades)[0]
del df['Director'],df['Company']
print(df.head(5))
df['Value'] = df['Value'].replace(['↑','$',','],'',regex=True)
print("############################")
print(df.head(5))
結果:不變 df:
Date Code Value
0 27/4/2022 ESR ↑$1,075
1 27/4/2022 LNY ↑126,750
2 26/4/2022 FGX ↑$13,363
3 26/4/2022 CDM ↑$25,110
4 26/4/2022 TEK ↑$35,384
############################
已洗掉符號但未能洗掉所有美元符號:
Date Code Value
0 27/4/2022 ESR $1075
1 27/4/2022 LNY 126750
2 26/4/2022 FGX $13363
3 26/4/2022 CDM $25110
4 26/4/2022 TEK $35384
Process finished with exit code 0
uj5u.com熱心網友回復:
您可以replace在數字中出現逗號,然后提取整數:
df["Value"] = df['Value'].str.replace(",","",regex=True).str.extract("(\d )").astype(int)
>>> df
Date Code Value
0 27/4/2022 ESR 1075
1 27/4/2022 LNY 126750
2 26/4/2022 FGX 13363
3 26/4/2022 CDM 25110
4 26/4/2022 TEK 35384
或者,替換所有不必要的字符:
df["Value"] = df['Value'].str.replace('↑|↓|\$|,|', '', regex=True).astype(int)
uj5u.com熱心網友回復:
$符號在正則運算式中具有特殊含義,您需要對其進行轉義
df['Value'] = df['Value'].replace(['↑','\$',','], '', regex=True)
print(df)
Date Code Value
0 27/4/2022 ESR 1075
1 27/4/2022 LNY 126750
2 26/4/2022 FGX 13363
3 26/4/2022 CDM 25110
4 26/4/2022 TEK 35384
uj5u.com熱心網友回復:
當您想使用數字時,理想的方法可能是擺脫除數字之外的所有內容并轉換為數字。
df['Value'] = pd.to_numeric(df['Value'].str.replace(r'\D', '', regex=True))
如果您有浮動,請使用r'[^\d\.]'. r'\D'輸出:
Date Code Value
0 27/4/2022 ESR 1075
1 27/4/2022 LNY 126750
2 26/4/2022 FGX 13363
3 26/4/2022 CDM 25110
4 26/4/2022 TEK 35384
uj5u.com熱心網友回復:
采用:
df['Value'] = df['Value'].str.replace('↑|,', '').str.replace('$', '')
In [82]: df.head()
Out[82]:
Date Code Value
0 27/4/2022 ESR 1075
1 27/4/2022 LNY 126750
2 26/4/2022 FGX 13363
3 26/4/2022 CDM 25110
4 26/4/2022 TEK 35384
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/467310.html
下一篇:使用不同的分隔符拆分文本
