如何将Pandas中独角兽数据集的VALUATION列转换为货币或整数格式?
处理独角兽数据集中VALUATION列的格式转换($1B/$150M转整数/货币格式)
针对Maven Analytics独角兽数据集中VALUATION列的$1B、$150M这类格式,下面是几种实用的转换方案,用Python pandas实现(EDA场景最常用工具):
方法1:自定义函数逐行处理(灵活兼容异常值)
这种方式适合需要精细处理异常格式的场景:
import pandas as pd # 加载数据集(根据你的文件格式调整,比如csv/excel) df = pd.read_csv('unicorn_companies.csv') def convert_to_integer(val): # 移除美元符号 val_clean = val.strip().replace('$', '') # 根据单位转换数值 if 'B' in val_clean: # 转换为十亿级整数 return int(float(val_clean.replace('B', '')) * 1_000_000_000) elif 'M' in val_clean: # 转换为百万级整数 return int(float(val_clean.replace('M', '')) * 1_000_000) else: # 处理无单位的纯数字情况(如果存在) try: return int(val_clean) except: return None # 生成新的整数估值列 df['valuation_int'] = df['VALUATION'].apply(convert_to_integer)
方法2:批量字符串替换(简洁高效)
如果数据格式非常规整,没有异常值,可以用更简洁的批量替换方式:
# 替换单位为科学计数法,再转换为整数 df['valuation_int'] = df['VALUATION'].str.replace('$', '') \ .str.replace('B', 'e9') \ .str.replace('M', 'e6') \ .astype(float) \ .astype(int)
转换为货币格式(带$和千分位)
如果需要把整数转回带格式的货币字符串,用格式化函数即可:
df['valuation_currency'] = df['valuation_int'].apply(lambda x: f"${x:,.0f}")
注意事项
- 提前检查数据中是否存在非标准格式(比如
$5K、无符号的数值),可以用df['VALUATION'].unique()查看所有唯一值 - 异常值可以返回
None或者标记为缺失值,后续用df.dropna()或df.fillna()处理
内容的提问来源于stack exchange,提问作者Srivignesh Ponmudi
相关产品推荐
相关产品推荐

