python - 将反引号 (`) + 分数的字符串转换为 float

标签 python pandas dataframe

我正在处理一个 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?数据集中的所有分数都以反引号开头。

最佳答案

我们必须将 locfillna (因为您有混合类型)和 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/

相关文章:

python - 列出一个类的方法并动态调用该类的方法

python - 看不到无限循环

python - rsplit() 无法使用正则表达式拆分列

python - 使用分层列创建 DataFrame

python - 当在每一行中需要使用整个数据进行比较时,在 Pandas 中使用矢量化

python - 将数据框 reshape 为多索引

python - 创建新的 pandas 行,作为来自不同行的文本值组合的结果,这些文本值在其他 pandas 列中具有相同的值

python - 迭代数据帧并保存和恢复每一行

python - 使用 Pandas 计算数据框中列中出现的数字

python - 基于单个特征集的分类精度