首先-我是Pandas的初学者,所以非常感谢您提供描述性的帮助。
我有一个数据框,称为df_persons。该数据框包含两列,一列为“年龄”,一列为“性别”。年龄范围是0-100岁。
我的主要目标是创建一个饼图,以显示特定年龄段的人数。
我想做的是创建一个具有3列的新数据框。 可以说我要命名这个新的数据框test_df。
“未满18岁” “ 18至40岁之间” “ 40-60岁之间” “ 60 +”
为了实现这一目标,我尝试了以下方法:
test_df['Under 18'] = df[(person_df['Age'] >=18]
但没有成功。
我设法通过以下方式使各列就位:
test_df['Under 18'] = df_person['Age']
但是,根据我需要从中提取信息的数据框,我无法填充我的4个新列。
test_df = pd.DataFrame(columns=['Under 18', 'Between 18 -40', 'Between 40-60', 'Over 60'])
test_df['Under 18'] =test_df['Under 18'].astype(str).astype(int)
test_df['Under 18'] = df_person[df_person['Age']>18]
实现此目标的最佳方法是什么? 任何帮助/提示/建议都非常欢迎。
答案 0 :(得分:0)
您始终可以尝试条件选择,因为您在第一个语句中确实很接近。因此,您有两个数据框:df_test和df_persons。我们想为您的年龄段划分df_persons并将其放置在df_test中。为了确保您不只是创建一个指向df_persons的变量,您会看到我在每个语句的末尾添加了.copy()命令,以便将df_test创建为一个对象。
看看这是否适合您的情况:
df_test ['Under 18'] = df_persons [df_persons ['Age'] <18] .copy()
df_test ['18 -18岁之间] = df_persons [(df_persons ['Age']> = 18)&(df_persons ['Age'] <40)]。copy()
df_test ['Between 40-60'] = df_persons [(df_persons ['Age']> = 40)&(df_persons ['Age'] <60)]。copy()
df_test ['60 +'] = df_persons [df_persons ['Age']> = 60] .copy()