有没有办法用数据框中的平均值替换范围数据(例如18-25)?
Posted
技术标签:
【中文标题】有没有办法用数据框中的平均值替换范围数据(例如18-25)?【英文标题】:Is there way to replace ranged data (eg 18-25) by its mean in a dataframe? 【发布时间】:2018-01-08 09:41:31 【问题描述】:我有一个数据集black friday. Here 是它的样子。 Age 的范围为 1-17,18-25 等。我想用它们的平均值替换所有这些范围。我可以遍历 Age 列的每个元素并解析它们并平均替换字符串值。那可能效率低下。 所以我想知道有没有更短的方法可以做到这一点?或者有没有其他方法来处理数据范围? (当然是在python中)
【问题讨论】:
欢迎来到 ***。请花时间阅读how to provide a great pandas example 上的这篇文章以及如何提供minimal, complete, and verifiable example 并相应地修改您的问题。 how to ask a good question 上的这些提示也可能有用。 @jezrael ,这种问题应该迁移或转移到这里Cross Validated 以获得有效的反馈。否则最好关闭/删除而不是像我们不一样累积的反对票这里有专业人士 【参考方案1】:有几种方法可以转换此变量。在我看到的图片中,不仅有 bin,而且还有 value '55+',需要考虑。
1) 一个班轮:
df['age'].apply(lambda x: np.mean([int(x.split('-')[0]), int(x.split('-')[1])]) if '+' not in x else x[:-1])
它检查该值是否包含“+”(如 55+),如果是,则返回不包含“+”的值。否则,bin 将被拆分为两个值,将它们转换为整数并计算它们的平均值。
2) 使用字典进行转换:
mapping = '1-17': 9, '18-25': 21.5, '55+': 55
df['age'].apply(lambda x: mapping[x])
您需要将所有值添加到映射字典(手动或自动计算它们)。然后将此转换应用于系列。
【讨论】:
以上是关于有没有办法用数据框中的平均值替换范围数据(例如18-25)?的主要内容,如果未能解决你的问题,请参考以下文章