2016-05-28 2 views
-1

У меня есть образец поисковой системы DataFrame, который имеет 2 столбца: введенное ключевое слово для поиска и количество поисков по этому ключевому слову. Пример:Как суммировать числа в Dataframe в зависимости от длины ключевых слов?

df = pd.DataFrame({'keyword': ['one','one two','2','two 34 45', 'ab', 'long 1 4 ab'], 
'number of searches': ['4', '9', '1', '2', '7', '1']}) 

Я хотел бы суммировать, сколько поисков было сделано (не просто посчитать количество слов) для ключевых слов, которые состоят из 1 слово, 2 слова, 3 слова и т.д., так конечный результат должен быть как :

1 word: 13 
2 words: 9 
3 words: 2 
4 words: 1 

Любые предложения?

+0

мне не нужно рассчитывать , Мне нужно суммировать на основе другой колонки. – Sergei

+0

ОК, извините, я удалил свой голос 'close' – MaxU

ответ

1

вы можете сделать это следующим образом:

первый, убедитесь, что ваш number of searches столбец целочисленного типа данных:

df['number of searches'] = df['number of searches'].astype(int) 

(df.groupby(df.keyword.str.split().apply(len))['number of searches'] 
    .sum() 
    .to_frame() 
    .reset_index() 
    .apply(lambda x: '{0[0]} words: {0[1]}'.format(x), axis=1) 
) 

выход:

0 1 words: 12 
1  2 words: 9 
2  3 words: 2 
3  4 words: 1 
dtype: object 
+0

Получил ошибку: SyntaxError: EOL во время сканирования строкового литерала. Я полагаю, что в лямбда-функциях должно быть закрытие? – Sergei

+0

Спасибо! Он отлично работает! – Sergei