python - 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', '']})
解决方案
使用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