#python #excel
Вопрос:
Мой набор данных выглядит следующим образом: (f обозначает функции, ID обозначает клиентов)
Я хотел бы подсчитать пары функций, которые отображаются во всех идентификаторах клиентов. Например,в приведенном выше примере, как видно,я хотел бы получить, что (f1,f2) = 3, (f2, f33)= 2, (f3, f33)=0 и так далее
Комментарии:
1. Не могли бы вы поделиться своим кодом, пожалуйста?
2. вы уверены,что (f2, f33)= 2 ? Разве это не было бы (f2,f33)= 1?
Ответ №1:
Я не уверен, понял ли я, чего вы хотите, но это мое предложение:
import pandas as pd
counter = dict()
df = pd.read_csv("./data.csv")
# iterate over columns
for column_name in list(df.columns):
column = list(df.loc[:,column_name])
# iterate over column elements except last one
for i in range(len(column)-1):
key = (column[i], column[i 1])
# if counter exists increment in 1
if key in counter:
counter[key] = 1
# if it does not exist start it with 1
else:
counter[key] = 1
print(counter)
Это выводит:
{('f1', 'f2'): 3, ('f2', 'f3'): 1, ('f3', nan): 1, ('f2', 'f4'): 2, ('f4', 'f6'): 1, ('f2', 'f33'): 1, ('f33', nan): 2, ('f4', 'f33'): 1}
Просто на случай, если кто-то еще захочет попробовать, данные были загружены из CSV-файла, который выглядит следующим образом:
ID1,ID2,ID3,ID4
f1,f1,f1,f2
f2,f2,f2,f4
f3,f4,f33,f33
,f6,,