python – 根据另一列中的值有条件地替换值

python – 根据另一列中的值有条件地替换值,第1张

概述我有一个非常大的数据帧(~1.7MM行×6列).相关数据的简化示例如下: City BoroughBrooklyn BrooklynAstoria QueensAstoria UnspecifiedRidgewood UnspecifiedRidgewood Queens 所以我试图根据City列中的信息填充’Unspecified’值.例如 我有一个非常大的数据帧(~1.7MM行×6列).相关数据的简化示例如下:
City        Boroughbrooklyn    brooklynAstoria     QueensAstoria     UnspecifIEdRIDgewood   UnspecifIEdRIDgewood   Queens

所以我试图根据City列中的信息填充’UnspecifIEd’值.例如,City RIDgewood在一个实例中位于UnspecifIEd Borough,但正确地将Borough列为数据集中其他地方的Queens.

我已经探索过Panda的补充,但它似乎不符合我的需求.我也考虑过np.where方法,但我不确定它在这种情况下是如何工作的.我对Pandas很新,但是地图/应用功能可能是我需要的吗?这可能可以通过一千种不同的方式实现,但是在寻找不会因数据大小而爬行的东西.

编辑:我能够创建一个字典,其中包含城市和行政区之间发生率最高的“对”,其代码如下:

specifIEd = data[['Borough','City']][data['Borough']!= 'UnspecifIEd']paired = specifIEd.Borough.groupby(specifIEd.City).max()paired = paired.to_dict()

配对的词典以城市为关键,自治市镇为价值.现在最后一步是将其应用/映射回行政区列……我该怎么做?

解决方法 这是一种方式:
>>> d         City      Borough0   brooklyn     brooklyn1    Astoria       Queens2    Astoria  UnspecifIEd3  RIDgewood  UnspecifIEd4  RIDgewood       Queens>>> realData = d[d.Borough != "UnspecifIEd"]>>> realData = pandas.SerIEs(data=realData.Borough.values,index=realData.City)>>> d['Borough'] = d.City.map(realData)>>> d         City   Borough0   brooklyn  brooklyn1    Astoria    Queens2    Astoria    Queens3  RIDgewood    Queens4  RIDgewood    Queens

这假设每个城市都有一个非未指定的自治市镇价值. (如果一个城市没有价值但是未指定,那么该行政区将显示为NA.)

编辑:如果你已经在你编辑的帖子中创建了你的词典,只需使用d [‘Borough’] = d.City.map(配对[‘Borough’])将每个城市从你的词典映射到自治市镇. map是一种有用的方法.它可以使用Pandas系列,使用dict或使用返回给定键的映射值的函数来映射值.

总结

以上是内存溢出为你收集整理的python – 根据另一列中的值有条件地替换值全部内容,希望文章能够帮你解决python – 根据另一列中的值有条件地替换值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1205207.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存