Skip to main content
 首页 » 编程设计

python之用 Pane 数据填充数据框

2025年05月04日11daizhj

我有一个这样的数据框。

import pandas as pd 
df = pd.DataFrame({'User':['A','A','A','A','B', 'B'],  
                   'Month':['2017-01-01','2017-03-01','2017-05-01','2017-09-01','2017-01-01','2017-05-01'], 
                    'count':[2,2,2,2,5,5]}) 

我想填充数据,使其看起来像这样

df = pd.DataFrame({'User':['A','A','A','A','A','A','A','A','A','A','A','A','B','B','B','B','B','B','B','B','B','B','B','B'], 
               'Month':['2017-01-01','2017-02-01','2017-03-01','2017-04-01','2017-05-01','2017-06-01','2017-07-01','2017-08-01','2017-09-01','2017-10-01','2017-11-01','2017-12-01','2017-01-01','2017-02-01','2017-03-01','2017-04-01','2017-05-01','2017-06-01','2017-07-01','2017-08-01','2017-09-01','2017-10-01','2017-11-01','2017-12-01'],  
               'count':[2,0,2,0,2,0,0,0,2,0,0,0,5,0,0,0,5,0,0,0,0,0,0,0]}) 

请您参考如下方法:

mux = pd.MultiIndex.from_product([ 
    df.User.unique(), 
    pd.date_range('2017-01-01', periods=12, freq='MS') 
], names=['User', 'Month']) 
 
df.set_index(['User', 'Month']).reindex(mux, fill_value=0) \ 
  .swaplevel(0, 1).reset_index() 
 
        Month User  count 
0  2017-01-01    A      2 
1  2017-02-01    A      0 
2  2017-03-01    A      2 
3  2017-04-01    A      0 
4  2017-05-01    A      2 
5  2017-06-01    A      0 
6  2017-07-01    A      0 
7  2017-08-01    A      0 
8  2017-09-01    A      2 
9  2017-10-01    A      0 
10 2017-11-01    A      0 
11 2017-12-01    A      0 
12 2017-01-01    B      5 
13 2017-02-01    B      0 
14 2017-03-01    B      0 
15 2017-04-01    B      0 
16 2017-05-01    B      5 
17 2017-06-01    B      0 
18 2017-07-01    B      0 
19 2017-08-01    B      0 
20 2017-09-01    B      0 
21 2017-10-01    B      0 
22 2017-11-01    B      0 
23 2017-12-01    B      0