У меня есть DataFrame, и мне нужно сгруппировать в новый DataFrame строки, которые удовлетворяют условию равенства между элементами, находящимися в одном столбце.
Например, у меня есть следующий DataFrame:
import pandas as pd
df = pd.DataFrame(np.array([
[1009, "Element1","125"],
[1007, "Element2","150"],
[1008, "Element2","150"],
[1007, "Element2","150"],
[1010, "Element3","-220"],
[1009, "Element4","-275"],
[1011, "Element5","500"]]),
columns=['Код', 'Столбец', 'Значение'])
Code language: JavaScript (javascript)
Мне нужно внести в новый DataFrame строки, в которых значения в столбце Код равны, т.е:
df = pd.DataFrame(np.array([
[1009, "Element1","125"],
[1009, "Element4","-275"],
[1007, "Element2","150"],
[1007, "Element2","150"],
columns=['Код', 'Столбец', 'Значение'])
Code language: PHP (php)
Я думал сделать это, используя df.loc[i,’Код’] и с помощью for сравнить следующие строки, но это не сработало.
Решение.
Простой способ – это SQL-эквивалент group by having count, т.е. группировка и фильтрация по количеству случаев в каждой группе:
df.groupby('Код').filter(lambda x: len(x) > 1).sort_values('Код')
Code language: JavaScript (javascript)