python - Pandas astype 为 int() 抛出无效文字,基数为 10 错误

标签 python pandas

我有一个 pandas 数据框 df ,其列名和数据类型在另一个文件中指定(读为 data_dict)。因此,为了正确获取数据,我使用以下代码:

col_list = data_dict['name'].tolist()
dtype_list = data_dict['type'].tolist()
dtype_dict = {col_list[i]: dtype_list[i] for i in range(len(col_list))}
df.columns = col_list
df = df.fillna(0)
df = df.astype(dtype_dict)

但它抛出了这个错误:

invalid literal for int() with base 10: '2.230'

我在线搜索的大多数答案都推荐使用 pd.to_numeric() 或类似 df[col1].astype(float).astype(int) 的方法。这里的问题是 df 包含 50 多列,其中大约 30 列应转换为整数类型。因此我不想一次转换一列的数据类型。

那么我怎样才能轻松修复这个错误呢?

最佳答案

尝试通过 bool 掩码:

mask=df.apply(lambda x:x.str.isalpha(),1).fillna(False)

最后:

df[~mask]=df[~mask].astype(float).astype(int)

或者

cols=df[~mask].dropna(axis=1).columns
df[cols]=df[cols].astype(float).astype(int)

关于python - Pandas astype 为 int() 抛出无效文字,基数为 10 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67791605/

相关文章:

python - Pandas 描述 - 附加参数

python - 为 Python 解释器建立的每个连接绑定(bind)传出 IP 地址

python - 按 A 列删除重复项,保留 B 列中值最高的行

python - 基于元组的子集 Pandas 数据框

python - 如何在多索引数据帧的最外层使用 iloc 切片?

python - python3 pandas 中的时间轮

python - 将军事时间从文本文件转换为标准时间 Python

python - 在 Python 中类似矩阵的二维数组打印

python - 为什么使用 dict.fromkeys() 和大括号为字典初始化赋值时会有差异?

python - read_sql block 大小错误