У меня есть следующий фрейм данных:
import pandas as pd
data = {'String': ['foo bar hello world this day', 'foo bar', 'hello bar world'],
'Value' : [ 10, 2, 5]}
df = pd.DataFrame(data, columns = ['String', 'Value'])
Что я хочу знать, так это уникальные слова, их появление и сумму значений, когда слово встречается в 'String'
. Итак, желаемый результат:
Unique word Occurrence Value sum
bar 3 17
world 2 15
foo 2 12
hello 2 15
day 1 10
this 1 10
Я могу получить уникальные слова и их появление с помощью:
pd.Series(' '.join(df.String).split()).value_counts()
Как добавить сумму значений?
Моя версия панд = 0.24.2
Для принятого ответа версия панд должна быть обновлена как минимум до 0.25.0
Вы можете сделать:
df['Unique Word'] = df['String'].str.split()
res = df.drop('String', 1).explode('Unique Word').groupby(['Unique Word'])['Value'].agg(['count', 'sum']).reset_index()
print(res)
Выход
Unique Word count sum
0 bar 3 17
1 day 1 10
2 foo 2 12
3 hello 2 15
4 this 1 10
5 world 2 15
Вы можете использовать что-то вроде
df.assign(String=df['String'].str.split()).explode("String").groupby('String')['Value'].agg(['count', 'sum']).reset_index()