我有一个数据集 black friday。
Here是它的样子。
年龄的范围是1-17,18-25等。我想用它们的平均值替换所有这些范围。我可以遍历 Age 列的每个元素并解析它们并用mean替换字符串值。这可能效率低下。
所以我想知道有没有更短的方法呢?或者有没有其他方法来处理数据范围? (在python ofcourse中)
答案 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])
您需要将所有值添加到映射字典(手动或自动计算)。然后将此转换应用于系列。