首页 > 解决方案 > Pandas 需要将 0.0 浮点数转换为空字符串,而不会弄乱 Pandas 中的其他数字

问题描述

我正在从 API 中提取数据并使用 Pandas 进行计算和转换。

这些计算创建了我必须保留到小数点后第二位的浮点数。0.03、0.04、0.0 等

然后我将这些数据存储到 BigQuery 并在 Google Data Studio (GDS) 中进行可视化。问题是数据工作室无法处理 0 数字的除法。所以我需要从我的系列中删除 0.0 。我认为这样做的方式是转换为字符串,删除 0.0 并使其为空,例如 .str.replace('0.0', '')

但是当我删除 0.0 时,我也会删除所有其他小数的领先优势。当我对系列执行 .round(decimals=3) 时,0.0 将保持为 0.0,因此我无法删除 0.00。

关于如何获取该系列数字并将任何 0.0 转换为空的任何想法?

例子

#In my dataframe I have something like Quantities
df = pd.DataFrame({'Store': ['X', 'Y', 'Z', 'A', 'B'],
                 'Quantities': ['0.0', '0.034', '0.402', '1.0', '0.0']})

#I want to remove 0.0 and make it blank, but keep 0.034 etc
df = pd.DataFrame({'Store': ['X', 'Y', 'Z'],
                 'Quantities': ['', '0.034', '0.402', '1.0', '']})

标签: pythonpandas

解决方案


使用mask

df = pd.DataFrame({'Store': ['X', 'Y', 'Z', 'A', 'B'],
                 'Quantities': ['0.0', '0.034', '0.402', '1.0', '0.0']})

df['Quantities'] = df['Quantities'].mask(df['Quantities']=='0.0', '')
print(df)

输出:

  Store Quantities
0     X           
1     Y      0.034
2     Z      0.402
3     A        1.0
4     B           

推荐阅读