Попытка воспроизвести функцию countif из excel в python

Я пытаюсь получить ниже требуемый вывод в 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

Я не уверен, чего не хватает, может ли кто-нибудь помочь мне в этом? Очень ценю вашу помощь.

Можете ли вы вставить полный код, пожалуйста :)

Harshana 13.12.2020 14:33

Каковы ваши критерии для столбца «Количество»? / Что такое оригинальный COUNTIF, который вы пытаетесь заменить?

Alex Watt 13.12.2020 14:34
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
68
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуй это:

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)

Другие вопросы по теме