在 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
我有一个带有法语翻译的英语单词数据框,这是一个简化版本:
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