在 pandas 中旋转 table 以计算唯一值

Pivot table in pandas to count unique values

我有一个带有法语翻译的英语单词数据框,这是一个简化版本:

English French
to provide fournir
to provide fournir
to provide offrir, fournir
to provide offrir
to provide fournir
to provide offrir

我想创建一个枢轴 table 来计算每个翻译的出现次数,如下所示:

English French translation Number of times
to provide fournir 3
to provide offrir, fournir 1
to provide offrir 2

我试过使用下面的代码,但是 (1) 它不保留法语翻译,并且 (2) 每个英文单词只有一行,而我希望有几行,每个提供法语翻译。

df_eng_word_trans = pd.pivot_table(df_user_vocabulary,index='english', values='french',aggfunc=pd.Series.nunique)
English French
to provide 712
to argue 521

在这个来自我的真实数据的示例中,只有一行用于“提供”,而我想要几行,每个不同的法语翻译都有计数。我还尝试了以下代码:

df_eng_word_trans = pd.pivot_table(df_user_vocabulary,index=['english','french'], values='french', aggfunc=pd.Series.nunique)

但我收到以下错误:

ValueError:'french' 的石斑鱼不是一维的

作为奖励,我还需要扩展有两个(或更多)单词的法语翻译并将它们添加到计数中,就像这样,但我认为这是第二阶段:

English French translation Number of times
to provide fournir 4
to provide offrir 3

感谢您的帮助。

使用value_counts:

>>> df.value_counts(['English', 'French']) \
      .rename('Number of times').reset_index()

      English           French  Number of times
0  to provide          fournir                3
1  to provide           offrir                2
2  to provide  offrir, fournir                1