【发布时间】: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('---') -
这意味着列中的单元格具有值“---”。您必须在转换之前先处理此问题