创建年份间隔并提取重复值

Create Interval of Years and extract repeated value

我有一个 table 类似于:

Name Year
Name1 1950
Name2 1951
Name3 1952
Name4 1953
...... ....
Name7 2019
Name3 2020
Name9 2021

而且我必须提取从最小日期到最大日期的所有几十年(每 10 年)中重复出现的名称。

我正在尝试做 groupby,但我就是得不到我想要的结果。

groupby如下:

data.groupby('Year').Name.nunique().reset_index()

问题是这个 groupby 为我单独分组了年份,我想提取每 10 年重复一次的人的名字。

提取这些信息的方法是什么?

谢谢。

最简单的方法是创建一个有几十年的临时列,然后按该列分组:

df = pd.DataFrame({
    "Name": ["Name1","Name2","Name2","Name1","Name3","Name3"], 
    "Year": [1950,1951,1952,1960,1961,1961]
})

df['Decade'] = (df['Year']//10)*10
counts = df.groupby(['Decade'])['Name'].value_counts()\
            .rename('Counts').reset_index()

这给了我们:

    Decade  Name    Counts
0   1950    Name2   2
1   1950    Name1   1
2   1960    Name3   2
3   1960    Name1   1