У меня есть 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', 'Column', 'value'])
Code language: JavaScript (javascript)
Мне нужно внести в новый DataFrame строки, в которых я знаю, что значения в столбце Code равны, т.е:
df = pd.DataFrame(np.array([
[1009, "Elemento","125"],
[1009, "Elemento","-275"],
[1007, "Elemento","150"],
[1007, "Elemento","150"],
columns=['Códe', 'Column', 'value'])
Code language: PHP (php)
Я думал сделать это, используя df.loc[i,’Code’] и с помощью for сравнить следующие строки, но это не сработало.
Решение.
Самый простой способ – это SQL-эквивалент group by having count, т.е. группировка и фильтрация по количеству ситуаций в каждой группе:
df.groupby('Códe').filter(lambda x: len(x) > 1).sort_values('Códe')
Code language: JavaScript (javascript)