根据条件从其他数据框中创建新的熊猫

时间:2019-07-18 18:59:12

标签: python pandas

首先-我是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]

实现此目标的最佳方法是什么? 任何帮助/提示/建议都非常欢迎。

1 个答案:

答案 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()

相关问题