a silly question for most of you.
I have this list:
JavaScript
x
5
1
In DT_INI DT_FIM Status Description jobName
2
0 IN100 01/01/2022 01/02/2022 Encerrado Abend no job XX_01 XX_01
3
1 IN200 01/02/2022 01/03/2022 Encerrado Abend no job XX_01 XX_01
4
2 IN300 01/03/2022 01/04/2022 Encerrado Abend no job XX_02 XX_02
5
I need to count how many Ins a jobName has in this list, get this count and populate a new column named Qt_Ins
.
it should looks like this:
JavaScript
1
5
1
In jobName DT_INI DT_FIM Status Description Qt_Ins
2
0 IN100 XX_01 01/01/2022 01/02/2022 Encerrado Abend no job XX_01 2
3
1 IN200 XX_01 01/02/2022 01/03/2022 Encerrado Abend no job XX_01 2
4
2 IN300 XX_02 01/03/2022 01/04/2022 Encerrado Abend no job XX_02 1
5
Could you guys help me again?
Thanks
Advertisement
Answer
Input:
JavaScript
1
10
10
1
import pandas as pd
2
from io import StringIO
3
4
s = """ In DT_INI DT_FIM Status Description jobName
5
0 IN100 01/01/2022 01/02/2022 Encerrado Abend no job XX_01 XX_01
6
1 IN200 01/02/2022 01/03/2022 Encerrado Abend no job XX_01 XX_01
7
2 IN300 01/03/2022 01/04/2022 Encerrado Abend no job XX_02 XX_02"""
8
9
df = pd.read_table(StringIO(s), "ss+", engine="python")
10
You can use groupby
with nunique
:
JavaScript
1
9
1
# Store columns
2
cols = list(df.columns)
3
df.set_index("jobName", inplace=True)
4
# Do the group by
5
df["Qt_Ins"] = df.groupby("jobName")["In"].nunique()
6
# Re-order columns
7
df = df.reset_index()[cols + ["Qt_Ins"]]
8
print(df.to_string())
9
Output:
JavaScript
1
5
1
In DT_INI DT_FIM Status Description jobName Qt_Ins
2
0 IN100 01/01/2022 01/02/2022 Encerrado Abend no job XX_01 XX_01 2
3
1 IN200 01/02/2022 01/03/2022 Encerrado Abend no job XX_01 XX_01 2
4
2 IN300 01/03/2022 01/04/2022 Encerrado Abend no job XX_02 XX_02 1
5