use*_*698 1 python indexing python-3.x pandas
我有这样的数据帧.
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]})
Run Code Online (Sandbox Code Playgroud)
我想填充数据,使它看起来像这样
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]})
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |