我有一個像這樣的熊貓資料框:
df = pd.DataFrame([
{'A': 'aaa', 'B': 5.56000000, 'C': 0.01000000, 'D': 1.00000000, 'E': 0.00001000},
{'A': 'bbb', 'B': 0.49000000, 'C': 0.00100000, 'D': 0.01000000, 'E': 0.00010000},
{'A': 'ccc', 'B': 1.70000000, 'C': 0.10000000, 'D': 0.10000000, 'E': 0.00100000},
{'A': 'ddd', 'B': 5.35000000, 'C': 0.00001000, 'D': 0.00001000, 'E': 0.01000000},
{'A': 'eee', 'B': 6.00000000, 'C': 16.00000000, 'D': 0.00000100, 'E': 1.00000000},
])
A B C D E
0 aaa 5.56000000 0.01000000 1.00000000 0.00001000
1 bbb 0.49000000 0.00100000 0.01000000 0.00010000
2 ccc 1.70000000 0.10000000 0.10000000 0.00100000
3 ddd 5.35000000 0.00001000 0.00001000 0.01000000
4 eee 6.00000000 16.00000000 0.00000100 1.00000000
我需要洗掉尾隨零,同時在逗號后舍入它們的整數值
獲取這樣的資料框:
A B C D E
0 aaa 5.56 0.01 1 0.00001
1 bbb 0.49 0.001 0.01 0.0001
2 ccc 1.70 0.1 0.1 0.001
3 ddd 5.35 0.00001 0.00001 0.01
4 eee 6.00 16 0.000001 1
注意:B 列在逗號后舍入 2 值,C、D、E 列尾隨零并酌情舍入
我怎樣才能做出這些轉變?y 嘗試以下解決方案:
df[['C', 'D', 'E']] = df[['C', 'D', 'E']].astype(str).apply(lambda x: x.str.rstrip('0'))
但我明白了:
A B C D E
0 aaa 5.56 0.01 1. 1e-05
1 bbb 0.49 0.001 0.01 0.0001
2 ccc 1.7 0.1 0.1 0.001
3 ddd 5.35 1e-05 1e-05 0.01
4 eee 6.0 16. 1e-06 1.
提前致謝!
uj5u.com熱心網友回復:
如果您這樣做只是為了獲取最終輸出,那么這是可行的。
df['temp'] = df['B'].astype('float')
df['B'] = df['temp'].astype('string')
但是可以肯定的是,如果您想對其進行更多操作,則必須再次更改型別,這可能會搞砸。
uj5u.com熱心網友回復:
嘗試了一段時間后,這里是我的解決方案:
df['B'] = df['B'].astype(float).round(2).map("{:,.2f}".format)
df[['C', 'D', 'E']] = df[['C', 'D', 'E']].astype(float)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/412597.html
標籤:
