为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫:根据它们所属的数字范围重命名列中的值?

熊猫:根据它们所属的数字范围重命名列中的值?

皈依舞 2023-04-18 10:50:26
我有一个数据框,其中包含一堆数字,范围从 1 到 100。我想拆分这些值,以便如果值介于 1 到 10 之间,则将它们替换为 0。如果值介于 11 到 20 之间,它们被替换为 1。如果值介于 21 - 30 之间,则它们被替换为 2,依此类推。我怎样才能用 Pandas 做到这一点?我试过的:dating["attr1_1"] = dating["attr1_1"][0:11] = 0 dating["attr1_1"] = dating["attr1_1"][11:21] = 1
查看完整描述

3 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

您可以使用 binning 过程pd.cut()

import pandas as pd

a = pd.Series(range(1,100))
pd.cut(a, bins=[1,11,21,31,41,51,61,71,81,91,101], labels=False, right=False)


查看完整回答
反对 回复 2023-04-18
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

您可以像这样在所有列上应用:

df.apply(lambda x: x-1 // 10)

这是调用底数除法:2.9 变为 2,1.8 变为 1 等。由于在您的情况下 30 应变为 2,因此我们在应用底数除法之前从值中减去 1。


查看完整回答
反对 回复 2023-04-18
?
白板的微信

TA贡献1883条经验 获得超3个赞

您可以创建一个函数来执行操作并将其作为 .apply() 的参数传递。例如:


def function_name(rows):

    if row > 0 and row <= 10:

        return 0

    elif othercases ...


for cols in df.columns: # loop over all columns in your dataframe

    df[cols] = df[cols].apply(function_name)


查看完整回答
反对 回复 2023-04-18
  • 3 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信