Альтернативный способ найти частоту термина и обработать соответствующие значения - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть вопрос относительно структуры моего кода.У меня есть следующий csv

name product country
 A     game1   USA
 A     game2   USA 
 B     bis     World
 .
 . 

По сути, имя каждого поставщика появляется несколько раз (столько, сколько количество продуктов у поставщика).Моя цель состоит в том, чтобы создать CSV, который содержит имя поставщика, количество продуктов и страну (если значение «мир», я назначу 5 или 1).До сих пор мне не удавалось использовать более алгоритмическое мышление.Вместо этого я использовал следующий код

df = pd.read_csv("testtest.csv") 

num_listings = df['vendor_name'].value_counts().to_dict()

print(num_listings)

, а затем я преобразовал словарь в файл CSV.Я предполагаю, что использование цикла for могло бы упростить мой код, поскольку я мог бы использовать счетчик, и пока имя остается прежним, просто используйте этот счетчик.Я не знаю, как мне подойти к этому.Я уже попробовал следующее, но это не сработало.

ds = pd.read_csv("testtest.csv", index_col = 'vendor_name') 

x=0
for index in ds:
  if ds['index'] == ds['index']:
    x=x+1
print(x) 

Любая помощь?

1 Ответ

0 голосов
/ 18 сентября 2018

Используйте groupby.agg со словарем функций агрегирования для каждого столбца.

import pandas as pd

d = {'product': pd.Series.nunique,
     'country': lambda x: 5 if (x=='World').any() else 1}
df.groupby('name').agg(d).reset_index()

Вывод:

  name  product  country
0    A        2        1
1    B        1        5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...