python - 在 Pandas 中将小数值转换为小数
问题描述
我有一个数据混乱的数据框。
df:
1 2 3
-- ------- ------- -------
0 123/100 221/100 103/50
1 49/100 333/100 223/50
2 153/100 81/50 229/100
3 183/100 47/25 31/20
4 2.23 3.2 3.04
5 2.39 3.61 2.69
我希望将小数值转换为十进制,转换公式为
例如:
- 123/100 = (123/100 + 1) = 2.23
- 333/100 = (333/100 +1) = 4.33
计算是fractional value + 1
当然,保持十进制值不变。
我如何在 Pandas 和 Python 中做到这一点?
解决方案
一个简单的方法是首先定义一个转换函数,该函数将应用于列中的每个元素:
def convert(s):
if '/' in s: # is a fraction
num, den = s.split('/')
return 1+(int(num)/int(den))
else:
return float(s)
然后使用该.apply
函数通过此函数运行列的所有元素:
df['1'] = df['1'].apply(convert)
结果:
df['1']:
0 2.23
1 1.49
2 2.53
3 2.83
4 2.23
5 2.39
然后根据需要在任何其他列上重复。
推荐阅读
- java - Mockito:在 thenCallRealMethod() 之前做额外的动作
- powershell - 如何在powershell的输出中过滤哈希
- python - SimpleITK Demons 注册指标的含义是什么?
- snowflake-cloud-data-platform - 在 Snowflake SQL 中同时满足两个条件时从 Select 中删除记录
- mysql - 减小测试/开发 mysql DB docker 映像的大小
- bash - 仅在 Mac 中具有先前值时才运行下一个命令
- python-3.x - 程序卡在通过 Pyserial 读取 arduino 的串行通信
- jquery - Ajax 无法在 Ubuntu 的 Apache 网络服务器上使用 CGI
- ios - macOS 上不存在 AVFAudio 框架会导致 iOS 应用出现警告(应用也应该在 AS Mac 上可用)
- azure-active-directory - 使用 Keycloak 和 Azure Active Directory 的 SSO