1
noqwerty 2020-12-14 13:24:07 +08:00
|
2
Scorpiocat OP 谢谢回答!我运行了一下代码没有问题。但是怎么能把医院中缺失的月份数据补齐去呢?
@noqwerty |
3
xyd1205148795 2020-12-14 13:48:01 +08:00
这个可以吗
df1 = df.set_index(['月','医院']).unstack() month =pd.DataFrame(np.arange(1,8,1).T,columns=['月']) month['月'] = month['月'].astype('str') data = month.merge(df1,how='left',on='月').fillna(0) print(data) |
4
jyyx 2020-12-14 14:20:06 +08:00
df = pd.DataFrame({'月':['1','2','3','5','7'],
'医院':['人民','二院','人民','二院','人民'], '销量':np.arange(1,10,2) }) month_list = ['1','2','3','4','5','6','7','8'] df['月'] = df['月'].astype('category').cat.set_categories(month_list, ordered=True) gb = df.groupby(['医院','月']).sum().fillna(0) print(gb) |
5
princelai 2020-12-14 14:21:58 +08:00
from itertools import product
df2 = df1.reindex(index=list(product(df1.index.get_level_values(0).unique(),[f'{i}' for i in np.arange(1,8,1)])),fill_value=0) |
6
Scorpiocat OP 我的想法是先 groupbysum,再对每一家医院的缺失月份数据补齐,这一步就不太明白。
放出原始数据,看看大家有没有兴趣整理一下。 原始数据 链接: https://pan.baidu.com/s/1zVaTeBDGzL1q_DjYrHptIQ 提取码: 1d2j |
7
Scorpiocat OP |
8
princelai 2020-12-14 16:05:38 +08:00 1
import pandas as pd
df = pd.read_excel("data.xlsx") df1 = df.pivot_table(index="医院",columns="月",values="总计",aggfunc="sum").reindex(columns=range(1,13)).fillna(0).cumsum(axis=1) df1.columns = [f"{c}月" for c in df1.columns] |
9
princelai 2020-12-14 16:06:04 +08:00 2
你这个 excel 表就能很快实现,一共也没多少数据
|
10
Scorpiocat OP @princelai #9 厉害!谢谢!自己刚开始学,就想着实战了...
|