有人可以告诉我如何自动在此数据框中添加行吗? 我有一个数据框df:
frequency
enrollment_id event days
1 access 2 3
7 8
9 4
10 3
12 2
15 21
18 4
19 8
20 20
22 16
23 2
28 2
29 14
navigate 2 1
7 4
9 1
10 3
11 1
12 1
15 5
18 1
19 1
22 3
23 1
28 1
29 2
page_close 2 1
7 6
9 2
10 3
... ...
200881 navigate 28 1
200882 discussion 28 4
navigate 28 4
200883 access 28 2
navigate 28 2
page_close 28 1
200885 navigate 21 1
200887 access 21 3
navigate 21 2
page_close 21 1
video 21 1
200888 access 21 2
discussion 21 1
navigate 21 5
page_close 21 1
video 21 1
wiki 21 1
200889 navigate 21 1
200893 navigate 21 2
200895 navigate 21 1
200896 navigate 21 1
200897 navigate 21 1
200898 navigate 21 1
200900 navigate 21 1
200901 access 21 3
navigate 21 2
page_close 21 2
video 21 1
200904 navigate 21 1
200905 navigate 21 1
此df有3个索引:1。事件2.天3. enrollment_id
并且只有一列frequency
事件有7种不同的value
,例如:access
,remove
等。
天有30个不同的vaule
0 - 29
(并非每个事件都有0 - 29
。某些事件只有例如0
,1
,{ {1}}。)
4
有很多不同的enrollment_id
(也许value
)。同样,并非每天都有100000
。
我的问题是:如何添加所有丢失的行?例如:如果我有这个
enrollment_id
我需要为
添加行 frequency
enrollment_id event days
1 access 2 3
7 8
我需要为 frequency
enrollment_id event days
1 access 0 0
1 0
3 0
4 0
5 0
6 0
... ...
29 0
添加所有其他0
和enrollment_id
的行
以及来自frequency 0
access
和0days - 29days
enrollment_id
的所有行
我真的想得到这个答案。我真的很感谢你的帮助!!
答案 0 :(得分:0)
编辑:
如果需要将上尉日添加到最后一级days
,请reindex
+ unstack
使用stack
:
df = df['frequency'].unstack()
.reindex(columns=list(range(30)), fill_value=0)
.stack()
.to_frame('frequency')
如果需要添加所有级别的所有组合:
由from_product
创建的新MultiIndex
使用:
#get all unique values of all levels
a = df.index.get_level_values('enrollment_id').unique()
b = df.index.get_level_values('event').unique()
c = df.index.get_level_values('days').unique()
或者您可以在以下列表中使用您的值:
a = ['access', 'remove']
b = range(1, df.index.get_level_values('event').max() + 1)
c = range(30)
mux = pd.MultiIndex.from_product([a,b,c], names=df.index.names)
#for missing values add 0
df = df.reindex(mux, fill_value=0)