Я пытаюсь получить ниже требуемый вывод в python
Вход:
S.No Name Marks
1 Jack 85
2 Ram 75
3 Jack 86
4 Ann 90
Требуемый результат:
S.No Name Marks Count
1 Jack 85 2
2 Ram 75 1
3 Jack 86 2
4 Ann 90 1
я попробовал приведенный ниже код, чтобы добавить столбец count, который похож на работу excel с использованием функции countif '''
data['count']=data['Name'].value_counts()
''' этот код дает следующий вывод
S.No Name Marks Count
1 Jack 85 NaN
2 Ram 75 NaN
3 Jack 86 NaN
4 Ann 90 NaN
Я не уверен, чего не хватает, может ли кто-нибудь помочь мне в этом? Очень ценю вашу помощь.
Каковы ваши критерии для столбца «Количество»? / Что такое оригинальный COUNTIF, который вы пытаетесь заменить?
Попробуй это:
df.merge(df.groupby('Name').count(), on='Name').loc[:,:'S.No_y'].rename(columns = {'S.No_x':'S.No', 'Marks_x':'Marks', 'S.No_y':'Count'}).set_index('S.No').sort_index()
Name Marks Count
S.No
1 Jack 85 2
2 Ram 75 1
3 Jack 86 2
4 Ann 90 1
Вы можете получить то, что вам нужно с groupby
и transform
:
df['count'] = df.groupby('Name')['Name'].transform('size')
который печатает:
S.No Name Marks count
0 1 Jack 85 2
1 2 Ram 75 1
2 3 Jack 86 2
3 4 Ann 90 1
Попробуй это:
import pandas as pd
import numpy as np
df =\
pd.DataFrame([["1","2","3","4"],
["Jack","Ram","Jack","Ann"],
[85,75,86,90]] ).T
df.columns = ["S.No","Name","Marks"]
df.set_index("S.No", inplace=True)
names_count = df.groupby("Name").size().rename("Count")
df = df.merge(names_count, on = "Name", right_index=True)
print(df)
Можете ли вы вставить полный код, пожалуйста :)