将str分数转换为pandas df中的浮动

约翰·鲁哈纳

我有一个非常尴尬的熊猫DataFrame,看起来像这样:

identifier    per_1       per_2       per_3       per_4       per_5
'something'   124/127     100/100     24/39       14/20       10/10
'camel'       121/122     150/206     300/307     11/12       0/2
 ...          ...         ...         ...         ...         ...

因此,除了第一列之外的所有内容都是一个“分数”,实际上是一个字符串。我希望它们以十进制形式。要访问除第一列以外的所有内容,我要抓取:

df.loc[:,df.columns != ('identifier')]

哪个工作正常。如果我想将单列转换为小数,可以这样做:

df['per_1'] = df['per_1'].apply(lambda x: [float(n) for n in x.split('/')[0:2]])
df['per_1'] = df['per_1'].apply(lambda x: x[0] / x[1] if x[1] != 0 else np.nan)

然后,我必须遍历我要为此做的每一列。考虑到我实际上可以抓住要使用的每个列,这对我来说并不十分精巧df.loc[:,df.columns != ('identifier')]有没有更好的方法来解决这个问题?

ky

试试下面的代码:

df[['identifier']].join(df.filter(like='per').apply(pd.eval))

    identifier     per_1     per_2     per_3     per_4 per_5
0  'something'  0.976378         1  0.615385       0.7     1
1      'camel'  0.991803  0.728155  0.977199  0.916667     0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章