如何在pandas中分组并应用函数

时间:2017-09-07 04:34:42

标签: python pandas pandas-groupby

我有以下数据框Bundle args = getArguments(); if (args != null) { showReceivedData.setText(args.getString("someEditTextData")); }

df

我需要对此数据框进行分组并应用一个函数,以便我能够计算一个名为 period remaining_et_months property_id beds 0 0 0 329 1 1 1 0 329 1 2 2 1 329 1 3 3 2 329 1 4 3 2 329 1 5 4 3 329 1 6 4 3 329 1 7 4 3 329 1 8 5 4 329 1 9 5 4 329 1 10 5 4 329 1 11 5 4 329 1 的列:

dist_period

我需要按g = df.groupby(['property_id', 'beds', 'period']) g.apply(some_function) property_idbeds进行分组,因为数据框大于此示例中的数据框。

我不清楚如何实现这一点,但我希望列period是这样的:

dist_period

请注意,当该组只有一个元素时, period remaining_et_months dist_period 0 0 0 0 1 1 0 1 2 2 1 1 3 3 2 1 4 3 2 2 5 4 3 1 6 4 3 2 7 4 3 3 8 5 4 1 9 5 4 2 10 5 4 3 11 5 4 4 的值为dist_period,但当该组具有多个元素时(请参阅时间段为3,4或5),则a计数从一开始就是执行。

1 个答案:

答案 0 :(得分:1)

获取计数多个行组的cumcount(编辑:请注意,这从0开始计数):

df['dist_period'] = df.groupby(['property_id', 'beds', 'period']).cumcount()

然后你只需添加句点和remaining_et_months之间的差异:

df['dist_period'] = df['period'] - df['remaining_et_months'] + df['dist_period']