In [419]: x = df.stack().reset_index().query('level_1 != "ID"')
In [426]: x.level_1 = pd.to_datetime(x.level_1, format='%d/%m/%Y')
In [431]: y = x.groupby([x.level_1.dt.year, x.level_1.dt.month])[0].sum()
In [445]: d = [str(j) + '/' + str(i) for i,j in y.index]
In [448]: ans = pd.DataFrame({'date': d, 'sum': y.values})
In [449]: ans
Out[449]:
date sum
0 1/2021 38
1 2/2021 18
2 7/2022 36
3 2/2023 19
# df = your original dataframe
mth_year_sums = dict()
for date, col in df.iteritems():
mth_year = date.split("/", maxsplit=1)[-1]
count = mth_year_sums.get(mth_year, 0)
mth_year_sums[mth_year] = count + sum(col)
result = pd.DataFrame({'sum': mth_year_sums})
# rename index name to 'date'
result.index.name = 'date'
print(result)
尝试转置数据帧,然后按
year
和month
分组df2:
或
首先对日期列值求和,然后按groupby计算和
将^{} 与^{} 和^{} 一起使用:
试试这个:
相关问题 更多 >
编程相关推荐