簡體   English   中英

Pandas:替換字符串列值

[英]Pandas : Replace string column values

我有一個帶有成本列的 Pandas 數據框,我正在嘗試對其進行格式化。 基本上,替換字符串並將其標准化為從不同來源提取的成本值。 還有一些'NaN'

以下是一些示例數據:

$2.75 
nan
4.150000
25.00
$4.50

我有以下代碼用於標准化列中值的格式。

for i in range(len(EmpComm['Cost(USD)'])):

    if (pd.isnull(EmpComm['Cost(USD)'][i])):
        print(EmpComm['Cost(USD)'][i], i)
        #EmpComm['Cost(USD)'] = EmpComm['Cost(USD)'].iloc[i].fillna(0, inplace=True)

    if type(EmpComm['Cost(USD)'].iloc[i]) == str:
       #print('string', i)
       EmpComm['Cost(USD)'] = EmpComm['Cost(USD)'].iloc[i].replace('$','')

輸出:

0      2.75
1      2.75
2      2.75
3      2.75
4      2.75
5      2.75

所有值都以 2.75 放置。 它正在為所有列值運行第二個 if 語句,因為它們被格式化為字符串。

我的問題是:你會如何格式化它?

在一般情況下,你應該避免手工for循環和使用矢量化功能,在可能情況下,與大熊貓。 在這里,您可以使用pd.to_numeric來測試和轉換系列中的值:

s = pd.Series(['$2.75', np.nan, 4.150000, 25.00, '$4.50'])

strs = s.astype(str).str.replace('$', '', regex=False)
res = pd.to_numeric(strs, errors='coerce').fillna(0)

print(res)

0     2.75
1     0.00
2     4.15
3    25.00
4     4.50
dtype: float64

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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