Частота встречаемости значения в колонке со списками / Python
Есть подобный датафрейм с множеством строк:
d = pd.DataFrame({'a':['id1', 'id2', 'id3'],
'b':["[None, 'https://example.com/link7', 'https://example.com/link7', 'https://example.com/link3']",
"[None, 'https://example.com/link', 'https://example.com/link3']",
"[None, 'https://example.com/link7', 'https://example.com/link' , 'https://example.com/']"]})
Нужно по колонке b определить частоту встречаемости каждого из URL-ов, то есть в данном случае - на выходе получить:
- https://example.com/link7 - 3
- None - 3
- https://example.com/link3 - 2
- https://example.com/link - 2
- https://example.com/ - 1
Помогите разобраться, пожалуйста, каким способом это можно сделать
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
import pandas as pd
import ast
df = pd.DataFrame({'a':['id1', 'id2', 'id3'],
'b':["[None, 'https://example.com/link7', 'https://example.com/link7', 'https://example.com/link3']",
"[None, 'https://example.com/link', 'https://example.com/link3']",
"[None, 'https://example.com/link7', 'https://example.com/link' , 'https://example.com/']"]})
res = df["b"].apply(lambda x:ast.literal_eval(x)).explode().value_counts(dropna=False)
print(res)
b
None 3
https://example.com/link7 3
https://example.com/link3 2
https://example.com/link 2
https://example.com/ 1
Name: count, dtype: int64