Ввод:
X Y Hyderabad 1 1 Bangalore 0 1 Goa 1 1 Chennai 0 1 Hyderabad 0 1 Goa 0 0 Chennai 0 1 Goa 0 0 Hyderabad 1 0 Chennai 0 1 Chennai 1 1 Goa 0 1 Bangalore 0 0 Bangalore 0 1
Ожидаемый вывод:
X 0 1 Y 0 3 1 1 7 3
Если у вас есть pandas фрейм данных, один из вариантов - использовать pandas.crosstab для возврата другого фрейма данных:
pandas
pandas.crosstab
import pandas as pd df = pd.read_csv('file.csv') res = pd.crosstab(df['X'], df['Y']) print(res) Y 0 1 X 0 3 7 1 1 3
collections.Counter решение также возможно, если результат словарятребуется:
collections.Counter
res = Counter(zip(df['X'].values, df['Y'].values))
Я имею в виду, если предположить, что это кадр данных pandas (называемый df)
df
from collections import Counter counter = Counter() for row in df.itertuples(): counter[row.X, row.Y] += 1
Вывод:
Counter({(0, 0): 3, (0, 1): 7, (1, 0): 1, (1, 1): 3})