pandas 列数据类型:对象到 int - 错误:float' 对象没有属性"替换"



pandas数据帧中的示例数据:

df['Revenue']

0                $0.00
1       $12,982,681.00
2                  NaN
3       $10,150,623.00
4                  NaN
...      
1713               NaN
1714               NaN
1715               NaN
1716               NaN
1717               NaN
Name: Revenue, Length: 1718, dtype: object    

我需要将列从货币格式更改为整数,以便运行计算和聚合。

# Fix format currency
if df['Revenue'].dtype == 'object':
df['Revenue'] = df['Revenue'].apply(lambda x: x.replace('$','')).apply(lambda x: x.replace(',','')).astype(np.int64)

当我运行上面的代码行来转换数据类型时,我会遇到以下错误:

3 # Fix format currency
4 if df['Revenue'].dtype == 'object':
5     df['Revenue'] = df['Revenue'].apply(lambda x: x.replace('$','')).apply(lambda x: x.replace(',','')).astype(np.int64)

AttributeError: 'float' object has no attribute 'replace'

您可以尝试替换除数字和句点之外的所有内容。如果您正在以csv的形式读取文件,则可以在读取阶段对其进行控制。

df['Revenue'].fillna(0).astype(str).replace('[^0-9.]','', regex=True).str.split('.').str[0].astype(int)

Revenue
0            0
1     12982681
2            0
3     10150623
4            0
1713         0
1714         0
1715         0
1716         0
1717         0

最新更新