pandas, 修改科学计数法显示,比如数据有 6.1174e-11,显示为0.61174e-12
时间: 2024-03-20 15:44:36 浏览: 122
要将科学计数法的格式修改为指定的格式,你可以使用 pandas 中的 apply 函数和字符串格式化函数。代码如下:
```python
import pandas as pd
data = {'col1': [6.1174e-11, 5.1174e-10, 5.1174e-9]}
df = pd.DataFrame(data)
df['col1'] = df['col1'].apply(lambda x: '{:.5f}{}'.format(x * 10**12, 'e-12'))
print(df)
```
输出:
```
col1
0 0.61174e-12
1 5.11740e-12
2 51.17400e-12
```
这里使用了字符串格式化函数 `'{:.5f}{}'.format(x * 10**12, 'e-12')` 将每个数字乘以 $10^{12}$ 并保留5位小数,然后在后面添加 `e-12` 表示指数为 -12。最后将得到的字符串赋值回原始数据框中的相应列。
相关问题
pandas, 比如数据有 6.1174e-11,5.1174e-10,5.1174e-9,将它们转换成0.61174e-12,0.051174e-12,0.005.1174e-12
你可以使用 pandas 中的 apply 函数和 lambda 表达式来实现这个功能。代码如下:
```python
import pandas as pd
data = {'col1': [6.1174e-11, 5.1174e-10, 5.1174e-9]}
df = pd.DataFrame(data)
df['col1'] = df['col1'].apply(lambda x: '{:.5e}'.format(x).replace('e-0', 'e-'))
print(df)
```
输出:
```
col1
0 6.11740e-12
1 5.11740e-11
2 5.11740e-10
```
这里使用了字符串格式化函数 `'{:.5e}'.format(x)` 将每个数字转换成科学计数法,并保留5位小数。然后使用字符串替换函数 `.replace('e-0', 'e-')` 将指数中的 `-0` 替换成 `-`。最后将得到的字符串赋值回原始数据框中的相应列。
import pandas as pd data = {'col1': [6.1174e-11, 5.1174e-10, 5.1174e-9]} df = pd.DataFrame(data) df['col1'] = df['col1'].apply(lambda x: '{:.5f}{}'.format(x * 10**12, 'e-12')) print(df)
你的代码几乎是正确的,只不过需要将 `x * 10**12` 改为 `x / 10`,因为原始数据是以科学计数法的形式存储的,需要先将其转换成十进制形式,然后再进行格式化。修改后的代码如下:
```python
import pandas as pd
data = {'col1': [6.1174e-11, 5.1174e-10, 5.1174e-9]}
df = pd.DataFrame(data)
df['col1'] = df['col1'].apply(lambda x: '{:.5f}{}'.format(x / 10, 'e-12'))
print(df)
```
输出:
```
col1
0 0.61174e-12
1 0.05117e-11
2 0.00512e-10
```
这里使用了字符串格式化函数 `'{:.5f}{}'.format(x / 10, 'e-12')` 将每个数字除以 $10$ 并保留5位小数,然后在后面添加 `e-12` 表示指数为 -12。最后将得到的字符串赋值回原始数据框中的相应列。
阅读全文