【问题标题】:Is there way to replace ranged data (eg 18-25) by its mean in a dataframe?有没有办法用数据框中的平均值替换范围数据(例如18-25)?
【发布时间】:2018-01-08 09:41:31
【问题描述】:

我有一个数据集black friday. Here 是它的样子。
Age 的范围为 1-17,18-25 等。我想用它们的平均值替换所有这些范围。我可以遍历 Age 列的每个元素并解析它们并平均替换字符串值。那可能效率低下。

所以我想知道有没有更短的方法可以做到这一点?或者有没有其他方法来处理数据范围? (当然是在python中)

【问题讨论】:

标签: python pandas machine-learning dataset


【解决方案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])

您需要将所有值添加到映射字典(手动或自动计算它们)。然后将此转换应用于系列。

【讨论】:

    猜你喜欢
    • 2020-03-16
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 2021-01-19
    • 2016-11-16
    • 1970-01-01
    相关资源
    最近更新 更多