我正在处理一个 excel 文件,我将其作为 pandas 数据框读入 python。 其中一列包含一个人睡了多少小时的回答。 示例列如下:
df['Sleep'] = [1, 2, 3, 'Blank', 4, 'Blank', '5`1/2', '`3/4']
我的目标是清理这些数据并将其全部放入一个数据类型中,其中空白为 NaN。使用以下方法处理空白:
df['Sleep'] = df.['Sleep'].replace('Blank',np.nan)
我的问题是如何将 5`1/2 之类的值转换为 5.5?数据集中的所有分数都以反引号开头。
最佳答案
我们必须将 loc
与 fillna
(因为您有混合类型)和 pd.eval
一起使用
m = df['Sleep'].str.contains('`', na=False)
df.loc[m, 'Sleep'] = df.loc[m, 'Sleep'].str.replace('`', '+').apply(pd.eval)
df['Sleep'] = pd.to_numeric(df['Sleep'], errors='coerce')
Sleep
0 1
1 2
2 3
3 Blank
4 4
5 Blank
6 5.5
7 0.75
关于python - 将反引号 (`) + 分数的字符串转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64330768/