提问者:小点点

有效熊猫种群计算


我有一个出生和死亡日期的数据集,像这样:

d1 = {'Birth_date': [1800,1810,1802,1804], 'Death_date': [1805, 1880,1854,1832]}
pd.DataFrame(data=d1)

   Birth_date  Death_date
0        1800        1805
1        1810        1880
2        1802        1854
3        1804        1832

我要计算:

  • 在给定的年龄,给定的年份中活着的个体的存量(例如1825年活着的18岁个体的数量)
  • 某一年在某一年龄的死亡人数(例如1825年死亡的18人)

理论上,输出如下所示:

   Date Number ind. aged 1 Number ind. aged 2 Number ind. aged k
0  1800                 .                 .                 .
1  1801                 .                 .                 .
2  1802                 .                 .                 .
3  1803                 .                 .                 .

   Date Number death aged 1 Number death aged 2 Number death aged k
0  1800                 .                 .                 .
1  1801                 .                 .                 .
2  1802                 .                 .                 .
3  1803                 .                 .                 .

我看不出有什么简单的方法来计算它。 有人面对过类似的问题吗?


共1个答案

匿名用户

你可以知道熊猫内置的分组和大小:

d1 = {'Birth_date': [1800,1810,1802,1804], 'Death_date': [1805, 1880,1854,1832]}

d1 = pd.DataFrame(data=d1)

d1['Age'] = d1['Death_date'] - d1['Birth_date']

print(d1.groupby(['Birth_date', 'Age']).size())

print(d1.groupby(['Death_date', 'Age']).size())

这将打印:

Birth_date  Age
1800        5      1
1802        52     1
1804        28     1
1810        70     1
dtype: int64

Death_date  Age
1805        5      1
1832        28     1
1854        52     1
1880        70     1
dtype: int64