python - 让 Pandas 找到缺失值并显示它们
问题描述
我还是一个初学者,所以不要硬评。我试图了解如何解决这个问题,而不是从您那里获得完整的代码。
我有一个具有以下格式的数据库,大约有 9000 行
Location Supplier Product Price
NY GG-10 70 $5
NY GG-10 7A $4
NY GG-10 80 $6
NY GG-10 8A $8
TX GX-05 70 $1
TX GX-05 80 $3
TN CX-01 70 $4
TN CX-01 7A $5
我已将此数据框上传到我的 pandas 项目,现在试图弄清楚如何让 python 显示哪些项目缺少价格。例如,供应商 GG-10 对所有 4 个项目 (70,7A,80,8A) 都有定价。GX-05 仅定价 2 件 (70,80) 但缺少 7A 和 8A。CX-01 缺少 80 和 8A。所以基本上我需要一个数据框来告诉我哪些供应商产品组合缺少价格。您可能了解,只有 4 种产品 - 70、7A、80、8A。
我想自己编写代码,但如果有人可以给我一个提示如何解决这个问题,那就太好了!手动完成这项工作会让我永远
更新的输出。由于某种原因,.dot 没有将列包装到一个单元格中
Product 70 7A 80 8A
Location Supplier
NY GG-10 1 1 1 1
TX GG-05 1 0 1 0
TN CX-01 1 1 0 0
解决方案
尝试使用crosstab
,频率显示为0表示缺失,然后我们可以dot
将它们组合成一个单元格
s=pd.crosstab(df.Supplier,df.Product)
s.eq(0).dot(s.columns+',').str[:-1]
Out[669]:
Supplier
CX-01 80,8A
GG-10 # blank here means nothing missing
GX-05 7A,8A
dtype: object
更新:更新原因见 OP 的评论
s=pd.crosstab([df.Location ,df.Supplier],df.Product)
s.eq(0).dot(s.columns+',').str[:-1] # here need to assign it back
s=s.eq(0).dot(s.columns+',').str[:-1] # adding this line
s
Out[671]:
Location Supplier
NY GG-10
TN CX-01 80,8A
TX GX-05 7A,8A
dtype: object
推荐阅读
- azure - Azure Kubernetes - 单节点,两个副本:端口问题?
- python - 如何使用 Python 将 µ 写入文本文件
- prometheus - 在 PromQL/MetricsQL 中按时间分组和聚合
- javascript - 在子组件中调用函数未在反应 js 中设置父状态
- vue.js - In Vue, when do child components render?
- python - Changing the user input statement if repeated exceptions
- angular - Can't bind to 'ngIf' since it isn't a known property of 'ng-container', Can't bind to 'ngIfElse' since it isn't a known property of 'ng-container'
- cordova - Http and Https calls not working after Cordova upgrade
- azure - 从 Azure 应用程序网关检索/恢复证书 pfx
- laravel - Getting an error when trying to run seed in laravel