【发布时间】:2021-06-15 17:32:49
【问题描述】:
我有一个数据作为字符串的列。我想用它们的实际比率替换所有这些值,即 '6.2/5.1' 到 1.2156 即除法后的实际值,因为我不能直接在我的模型中使用原始值。我尝试使用 strip 函数拆分字符串,但我不明白如何用正确位置的值替换它。
【问题讨论】:
标签: python pandas data-science data-cleaning feature-selection
我有一个数据作为字符串的列。我想用它们的实际比率替换所有这些值,即 '6.2/5.1' 到 1.2156 即除法后的实际值,因为我不能直接在我的模型中使用原始值。我尝试使用 strip 函数拆分字符串,但我不明白如何用正确位置的值替换它。
【问题讨论】:
标签: python pandas data-science data-cleaning feature-selection
我不确定,但我认为您可以使用 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))
ThePyGuy 解决方案更简洁,应该在我的基础上使用。
【讨论】: