有没有办法用数据框中的平均值替换远程数据(例如18-25)?

时间:2017-08-01 13:27:56

标签: python pandas machine-learning dataset

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

所以我想知道有没有更短的方法呢?或者有没有其他方法来处理数据范围? (在python ofcourse中)

1 个答案:

答案 0 :(得分:0)

有几种方法可以转换此变量。在我看到的图片中,不仅有箱子,还有价值'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被分成两个值,它们被转换为int并计算它们的平均值。

2)使用字典进行转换:

mapping = {'1-17': 9, '18-25': 21.5, '55+': 55}
df['age'].apply(lambda x: mapping[x])

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