我创建了一个数据框:

df1 = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],
                    'year':[2000,2001,1998,1999,1998,1998,2000]})

如下所示:
    key    year
0    b    2000
1    b    2001
2    a    1998
3    c    1999
4    a    1998
5    a    1998
6    b    2000

我想以最快的方式获取每一行的出现次数:
key  year    frequency
b    2000    2
b    2001    1
a    1998    3
c    1999    1

最佳答案

通过做

df1.groupby(['key','year']).size().reset_index()

你得到...
  key  year  0
0   a  1998  3
1   b  2000  2
2   b  2001  1
3   c  1999  1

如您所见,该列尚未命名,因此您可以执行以下操作
mydf = df1.groupby(['key','year']).size().reset_index()
mydf.rename(columns = {0: 'frequency'}, inplace = True)

mydf

  key  year  frequency
0   a  1998          3
1   b  2000          2
2   b  2001          1
3   c  1999          1

(您可以根据需要省略.reset_index(),但在这种情况下,您需要将mydf转换为数据框,例如mydf = pd.DataFrame(mydf),然后再对列进行重命名)

关于python - Pandas :如何从DataFrame中删除重复的行并计算其频率?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21558999/

10-10 10:28