【问题标题】:Converting percent column to float in pandas将百分比列转换为在熊猫中浮动
【发布时间】:2022-07-13 00:08:17
【问题描述】:

我正在尝试将一组列转换为浮点对象,但我不断收到值错误。我曾尝试使用.astype('float'),但最终还是遇到了同样的错误。下面是我现在使用的代码。


for column in pct_columns:
    df[column] = df[column].apply(lambda X: float(X.replace('%',''))/100)

这是我得到的错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Input In [127], in <cell line: 3>()
      1 pct_columns = ['R_SIG_STR_pct', 'B_SIG_STR_pct', 'R_TD_pct', 'B_TD_pct']
      3 for column in pct_columns:
----> 4     df[column] = df[column].apply(lambda X: float(X.replace('%',''))/100)

File ~/opt/anaconda3/envs/book_env/lib/python3.8/site-packages/pandas/core/series.py:4108, in Series.apply(self, func, convert_dtype, args, **kwds)
   4106     else:
   4107         values = self.astype(object)._values
-> 4108         mapped = lib.map_infer(values, f, convert=convert_dtype)
   4110 if len(mapped) and isinstance(mapped[0], Series):
   4111     # GH 25959 use pd.array instead of tolist
   4112     # so extension arrays can be used
   4113     return self._constructor_expanddim(pd_array(mapped), index=self.index)

File pandas/_libs/lib.pyx:2467, in pandas._libs.lib.map_infer()

Input In [127], in <lambda>(X)
      1 pct_columns = ['R_SIG_STR_pct', 'B_SIG_STR_pct', 'R_TD_pct', 'B_TD_pct']
      3 for column in pct_columns:
----> 4     df[column] = df[column].apply(lambda X: float(X.replace('%',''))/100)

ValueError: could not convert string to float: '---'

【问题讨论】:

  • 你应该弄清楚为什么你有这个字符串作为你的数据框'---',因为它不能转换为浮点数:float('---')
  • 这意味着列中的单元格具有值“---”。您必须在转换之前先处理此问题

标签: python pandas dataframe


【解决方案1】:

你应该专注于这个确切的问题:

ValueError: could not convert string to float: '---'

两种可能的方法是:

  1. 删除包含值'---' 的行。
  2. '---' 值替换为可以转换为浮点数的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 2022-11-17
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    相关资源
    最近更新 更多