首页 > 解决方案 > 如何翻转一列比率,转换为分数并转换为浮点数

问题描述

我有以下数据框:

         Date Ratio
0  2000-06-21   4:1
1  2000-06-22   3:2
2  2000-06-23   5:7
3  2000-06-24   7:1

对于Ratio列中的每个项目,我想反转比率,将其转换为分数并将其转换为浮点数。

意思是 4:1 会变成 1:4,然后 : 会被替换成 /,最后会得到 0.25。3:2 将变为 2/3,即转换为 0.66666666666。

到目前为止,我只有以下代码:

df['Ratio'] = df['Ratio'].str.split(":")

标签: pythonpandasdataframe

解决方案


DataFrameexpand=Truein创建新的Series.str.split,转换为整数并最后除列:

df1 = df['Ratio'].str.split(":", expand=True).astype(int)
df['Ratio'] = df1[1].div(df1[0])

对于一条线的解决方案是可能的使用DataFrame.set_axisDataFrame.eval

df['Ratio'] = (df['Ratio'].str.split(":",expand=True)
                          .astype(int)
                          .set_axis(['a','b'], inplace=False, axis=1)
                          .eval('b/a'))
print (df)
         Date     Ratio
0  2000-06-21  0.250000
1  2000-06-22  0.666667
2  2000-06-23  1.400000
3  2000-06-24  0.142857

推荐阅读