在我要過濾的列上,該列包含來自兩個不同來源的資料。我想標準化這些資料。我們以某種方式收集了一些資料,而其他行資料包含以另一種方式收集的資料。有些行包含 1.2 2.3 3.4 且不超過 5。我想將這些數字乘以 1,000 以與其他數字相匹配,并從 1,000 以上的數字中洗掉逗號。
| 第 1 列 | 列2 |
|---|---|
| 1 | 1.641 |
| 2 | 1.548 |
| 3 | 1,807.000 |
| 4 | 1,759.000 |
uj5u.com熱心網友回復:
聽起來您想過濾一些行 ( col2 < 5),應用轉換 ( col2 * 1000) 然后洗掉某些內容 ( ,)。
df.loc[df['col2']<=5,'col2'] = df['col2']*1000
接下來是洗掉逗號,但如果您知道 col2 中的所有值都是整數(沒有小數),那么我認為您可以
df['col2'] = int(df['col2'])
但是應用替換更安全,但前提是值是字串(如果不是,df['col2'] = str(df['col2']))
然后您可以應用以下內容:
df['col'2'] = df['col2'].str.replace(',','')
uj5u.com熱心網友回復:
您可以創建一個關于是否'col2'包含逗號的布爾掩碼。如果它包含逗號,請洗掉逗號。對于沒有逗號的數字,乘以 1000:
mask = df['col2'].str.contains(',')
df.loc[mask, 'col2'] = df.loc[mask, 'col2'].str.replace(',','')
df['col2'] = df['col2'].astype(float)
df.loc[~mask, 'col2'] *= 1000
輸出:
col1 col2
0 1 1641.0
1 2 1548.0
2 3 1807.0
3 4 1759.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/383033.html
