У меня есть фрейм данных с данными Reddit, включая автора и поле subreddit. Я хотел бы получить для каждого автора распределение того, как часто он / она публикует сообщения в каждом субреддите, которое можно сравнить с распределением других авторов.
sub_visits = df.groupby('author').subreddit.value_counts()/df.groupby('author').subreddit.count()
Эта строка дает мне мультииндексированный pandas фрейм данных с автором в качестве первого индекса. Затем все сабреддиты, в которых автор был активен в качестве второго индекса и, наконец, в качестве значений доли их сообщений, которые были в этом сабреддите.
Это хорошо, но я хотел бы получить распределения одинаковой длины для каждого author.
Для этого я включил все сабреддиты из всей df (а не только те, которые посетил автор), в фрейм данных с авторами в виде строк. Затем я заполняю это нулями, а затем значениями из sub_visits.
Это для l oop технически работает для этого.
pdf = pd.DataFrame(index = df.author.unique(),columns = all_subs)
pdf = pdf.fillna(0)
for idx, df_select in sub_visits.groupby(level=[0, 1]):
pdf.loc[idx[0],idx[1]] = df_select[0]
Однако это довольно медленно, просто для заполнения в значениях. Интересно, есть ли способ лучше? Либо создание раздачи, либо заполнение значений.
Большое спасибо