我有以下数据框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_id
和beds
进行分组,因为数据框大于此示例中的数据框。
我不清楚如何实现这一点,但我希望列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计数从一开始就是执行。
答案 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']