【发布时间】:2020-08-13 13:31:32
【问题描述】:
假设我们有这些数据:
list1, list2, list3 = [1,2,3,4], [1990, 1990, 1990, 1991], [2009, 2009, 2009, 2009]
df = pd.DataFrame(list(zip(list1, list2, list3)), columns = ['Index', 'Y0', 'Y1'])
> df
Index Y0 Y1
1 1990 2009
2 1990 2009
3 1990 2009
4 1991 2009
我想计算每一年有多少行(“索引”)属于每年,但不包括 Y0。
假设我们从第一个可用年份开始,即 1990 年:
我们计算了多少行? 0.
1991 年:
- 三个(第 1、2、3 行)
1992 年:
- 四个(第 1、2、3、4 行)
...
2009 年:
- 四个(第 1、2、3、4 行)
所以我想最终得到一个数据框,上面写着:
Count Year
0 1990
3 1991
4. 1992
... ...
4 2009
我的尝试:
df['Y0'] = pd.to_datetime(df['Y0'], format='%Y')
df['Y1'] = pd.to_datetime(df['Y1'], format='%Y')
# Group by the interval between Y0 and Y1
df = d.groupby([d['Y0'].dt.year, d['Y1'].dt.year]).agg({'count'})
df.columns = ['count', 'Y0 count', 'Y1 count']
# sum the total
df_sum = pd.DataFrame(df.groupby(df.index)['count'].sum())
但结果看起来不对。
感谢任何帮助。
【问题讨论】:
标签: python pandas dataframe pandas-groupby