如何处理一列整数字符串以对其应用数学运算
How to Handle a Column of string of integers to apply a mathematical operation on it
我有一个数据为字符串的列。我想用它们的实际比率替换所有这些值,即
'6.2/5.1' 到 1.2156 即除法后的实际值,因为我不能在我的模型中直接使用原始值。我尝试使用 strip 函数拆分字符串,但我不明白如何在正确的位置用值替换它。
我不确定,但我认为您可以使用 eval
和 apply
来完成工作。
df['DELTA-T(L/R)'].apply(eval)
更新:
我试过了,它有效..
这是示例:
df = pd.DataFrame({'ratio': ['1.2/.25', '1/2', '2/3']})
df
ratio
0 1.2/.25
1 1/2
2 2/3
df['ratio'].apply(eval)
0 4.800000
1 0.500000
2 0.666667
Name: ratio, dtype: float64
我会创建一个方法来完成您想要完成的任务,例如:
def convert_to_float(s):
nums = s.split("/")
return float(nums[0]) / float(nums[1])
s = '6.2/5.1'
convert_to_float(s)
> 1.215686274509804
然后您可以使用 pandas 中的 apply 方法:
df['DELTA-T(L/R)'].apply(lambda x: convert_to_float(x))
编辑:
PyGuy 解决方案更简洁,应该比我的解决方案更简洁。
我有一个数据为字符串的列。我想用它们的实际比率替换所有这些值,即 '6.2/5.1' 到 1.2156 即除法后的实际值,因为我不能在我的模型中直接使用原始值。我尝试使用 strip 函数拆分字符串,但我不明白如何在正确的位置用值替换它。
我不确定,但我认为您可以使用 eval
和 apply
来完成工作。
df['DELTA-T(L/R)'].apply(eval)
更新: 我试过了,它有效.. 这是示例:
df = pd.DataFrame({'ratio': ['1.2/.25', '1/2', '2/3']})
df
ratio
0 1.2/.25
1 1/2
2 2/3
df['ratio'].apply(eval)
0 4.800000
1 0.500000
2 0.666667
Name: ratio, dtype: float64
我会创建一个方法来完成您想要完成的任务,例如:
def convert_to_float(s):
nums = s.split("/")
return float(nums[0]) / float(nums[1])
s = '6.2/5.1'
convert_to_float(s)
> 1.215686274509804
然后您可以使用 pandas 中的 apply 方法:
df['DELTA-T(L/R)'].apply(lambda x: convert_to_float(x))
编辑:
PyGuy 解决方案更简洁,应该比我的解决方案更简洁。