假設我有一個如下所示的資料框:
Col1
0 100,000,000
1 234,343,000
2 NaN
3 213,564,545
4 NaN
5 678,000
6 200
如何將 Col1 中的非 NaN 值除以 1000 并獲得理想的輸出:
Col1 Col2
0 100,000,000 100,000
1 234,343,000 234,343
2 NaN NaN
3 213,564,545 213,564
4 NaN NaN
5 678,000 678
6 200 0.2
我試圖這樣做,df['Col1'].div(1000)但由于 NaN 值,它不起作用
uj5u.com熱心網友回復:
看起來你有字串,所以除以 1000 只是洗掉最后一個逗號和最后 3 位數字。您可以使用正則運算式:
df['Col2'] = df['Col1'].str.replace(',?\d{,3}$', '', regex=True)
輸出:
Col1 Col2
0 100,000,000 100,000
1 234,343,000 234,343
2 NaN NaN
3 213,564,545 213,564
4 NaN NaN
5 678,000 678
模擬真正的除法:
只有小數字作為浮點數
df['Col2'] = df['Col1'].str.replace(r'(.*?)(,?(\d{1,3}))$',
lambda m: m.group(1) if m.group(1) else ('0.' m.group(3).zfill(3)),
regex=True)
輸出:
Col1 Col2
0 100,000,000 100,000
1 234,343,000 234,343
2 NaN NaN
3 213,564,545 213,564
4 NaN NaN
5 678,000 678
6 23 0.023
所有浮動
df['Col2'] = df['Col1'].str.replace(r'(.*?)(,?(\d{1,3}))$',
lambda m: (m.group(1) if m.group(1) else '0') '.' m.group(3).zfill(3),
regex=True)
輸出:
Col1 Col2
0 100,000,000 100,000.000
1 234,343,000 234,343.000
2 NaN NaN
3 213,564,545 213,564.545
4 NaN NaN
5 678,000 678.000
6 23 0.023
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/360307.html
