i have a dataframe like this
JavaScript
x
9
1
F_Class Product Packages
2
Apple Apple_A 1
3
Apple Apple_A 2
4
Apple Apple_A 1
5
Apple Apple_B 2
6
Bananas Banana_A n.a.
7
Bananas Banana_A n.a.
8
9
I want to build the following count function to count the items in my dataframe like shown below.
- The Function should count by the Subset
['F_Class','Product']
- If
df['Packages'] == 2
then increase by+2
else increase by+1
The result should look like this:
JavaScript
1
9
1
F_Class Product Packages Counter
2
Apple Apple_A 1 1
3
Apple Apple_A 2 3
4
Apple Apple_A 1 4
5
Apple Apple_B 2 2
6
Bananas Banana_A n.a. 1
7
Bananas Banana_A n.a. 2
8
9
Advertisement
Answer
If need sum by Packages
numbers use DataFrameGroupBy.cumsum
with replace missing values to 1
:
JavaScript
1
13
13
1
df['Packages'] = pd.to_numeric(df['Packages'], errors='coerce')
2
3
df['Counter'] = (df.assign(Packages = df['Packages'].fillna(1).astype(int))
4
.groupby(['F_Class','Product'])['Packages'].cumsum())
5
print (df)
6
F_Class Product Packages Counter
7
0 Apple Apple_A 1.0 1
8
1 Apple Apple_A 2.0 3
9
2 Apple Apple_A 1.0 4
10
3 Apple Apple_B 2.0 2
11
4 Bananas Banana_A NaN 1
12
5 Bananas Banana_A NaN 2
13
Detail:
JavaScript
1
9
1
print (df.assign(Packages = df['Packages'].fillna(1).astype(int)))
2
F_Class Product Packages
3
0 Apple Apple_A 1
4
1 Apple Apple_A 2
5
2 Apple Apple_A 1
6
3 Apple Apple_B 2
7
4 Bananas Banana_A 1
8
5 Bananas Banana_A 1
9