自动在数据框中添加行

时间:2017-10-23 05:32:31

标签: python dataframe

有人可以告诉我如何自动在此数据框中添加行吗? 我有一个数据框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

  1. 事件有7种不同的value,例如:accessremove等。

  2. 天有30个不同的vaule 0 - 29(并非每个事件都有0 - 29。某些事件只有例如01,{ {1}}。)

  3. 4有很多不同的enrollment_id(也许value)。同样,并非每天都有100000。 我的问题是:如何添加所有丢失的行?
  4. 例如:如果我有这个

    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 添加所有其他0enrollment_id的行 以及来自frequency 0

    access0days - 29days enrollment_id的所有行

    我真的想得到这个答案。我真的很感谢你的帮助!!

1 个答案:

答案 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)