gpt4 book ai didi

python - Pandas 将年龄变量分组

转载 作者:太空宇宙 更新时间:2023-11-04 07:33:00 26 4
gpt4 key购买 nike

我有一个带有年龄的数据框 df,我正在努力将文件分类为 0 和 1 的年龄组。

df:

User_ID | Age
35435 22
45345 36
63456 18
63523 55

我尝试了以下方法

df['Age_GroupA'] = 0
df['Age_GroupA'][(df['Age'] >= 1) & (df['Age'] <= 25)] = 1

但是得到这个错误

SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

为了避免它,我要使用 .loc

df['Age_GroupA'] = 0
df['Age_GroupA'] = df.loc[(df['Age'] >= 1) & (df['Age'] <= 25)] = 1

但是,这会将所有年龄标记为 1

这是我得到的

User_ID | Age | Age_GroupA
35435 22 1
45345 36 1
63456 18 1
63523 55 1

虽然这是目标

User_ID | Age | Age_GroupA
35435 22 1
45345 36 0
63456 18 1
63523 55 0

谢谢

最佳答案

由于同行压力 (@DSM),我觉得有必要分解您的错误:

df['Age_GroupA'][(df['Age'] >= 1) & (df['Age'] <= 25)] = 1

这是 chained indexing/assignment

接下来你尝试了什么:

df['Age_GroupA'] = df.loc[(df['Age'] >= 1) & (df['Age'] <= 25)] = 1

是不正确的形式,当使用 loc 时你想要:

df.loc[<boolean mask>, cols of interest] = some scalar or calculated value

像这样:

df.loc[(df['Age_MDB_S'] >= 1) & (df['Age_MDB_S'] <= 25), 'Age_GroupA'] = 1

您也可以使用 np.where 完成此操作:

df['Age_GroupA'] = np.where( (df['Age_MDB_S'] >= 1) & (df['Age_MDB_S'] <= 25), 1, 0)

要在一行中做到这一点,有很多方法可以做到这一点

关于python - Pandas 将年龄变量分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43325040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com