【发布时间】:2016-09-29 01:14:58
【问题描述】:
我有一个数据框,其中有一列字符串是整数和带分数的混合。我想将列 'y' 转换为浮点数。
x y z
0 4 Info
1 8 1/2 Info
2 3/4 Info
3 10 Info
4 4 Info
5 6 1/4 Info
我正在考虑的逻辑是将列 'y' 拆分为 ' ' 和 '/' 以创建三个看起来像这样的单独列。
x base b c z
0 4 0 0 Info
1 8 1 2 Info
2 0 3 4 Info
3 10 0 0 Info
4 4 0 0 Info
5 6 1 4 Info
从这里我可以
def convertReplace(df):
convert = lambda x: float(x)
df['base'].apply(convert)
df['b'].apply(convert)
df['c'].apply(convert)
decimal = lambda x,y: x/y
try:
df['d'] = decimal(df['b'],df['c'])
df['y'] = df['base'] + df['d']
except:
df['y'] = df['base']
return df
这可能有效,但我无法使用 here 找到的方法拆分列。
df = pd.DataFrame(df.y.str.split(' ',1).str.split('/',1).tolist(),columns = ['base','b','c'])
错误表示每次可能是 1、2 或 3 时它需要 3 个参数。即使 this thread 也不使用多个分隔符。
实际的数据框有超过 40 万行。效率会很好,但我对完成它更感兴趣。这个逻辑是正确的还是有更简洁的方法来做到这一点?任何帮助表示赞赏。
【问题讨论】:
标签: python pandas split fractions