Python Pandas按顺序插入行

时间:2018-04-17 23:23:18

标签: python pandas data-science

我当前的数据集是

Month  // MonthOnBook // ClickMonth // ClickRate

2017-05           23            4    14.982306
2017-05           23           18    19.253211
2017-05           23           22    19.793899
2017-06           22           3     20.346334
2017-06           22           5     22.545454

我希望新数据集类似于下面的

2017-05           23           1     0.00
2017-05           23           2     0.00
2017-05           23           3     0.00
2017-05           23           4    14.982306
2017-05           23           5    14.982306
2017-05           23           6    14.982306
....

2017-05           23           17    14.982306
2017-05           23           18    19.253211
2017-05           23           19    19.253211
...
2017-05           23           21    19.253211
2017-05           23           20    19.793899
2017-05           23           21    19.793899
....
2017-05           23           34    19.793899
2017-05           23           35    19.793899

下个月同样的事情,但是因为已经有22个月的书籍,会有22行......

我该怎么做?

非常感谢任何帮助或指南

2 个答案:

答案 0 :(得分:1)

您可以插入多行,如下所示

pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))

有关pandas dataframe append

的更多信息,请参阅此页面

Pandas API documentation : DataFrame Append

答案 1 :(得分:0)

您可以将reindexgroupby

一起使用
s=df.groupby('Month').apply(lambda x : x.set_index('ClickMonth').reindex(list(range(1,max(x['ClickMonth'])+1))).reset_index().ffill()).reset_index(drop=True)


s.Month=s.Month.bfill();s.MonthOnBook=s.MonthOnBook.bfill();s.fillna(0,inplace=True)
s
Out[606]: 
    ClickMonth    Month  MonthOnBook  ClickRate
0            1  2017-05         23.0   0.000000
1            2  2017-05         23.0   0.000000
2            3  2017-05         23.0   0.000000
3            4  2017-05         23.0  14.982306
4            5  2017-05         23.0  14.982306
5            6  2017-05         23.0  14.982306
6            7  2017-05         23.0  14.982306
7            8  2017-05         23.0  14.982306
8            9  2017-05         23.0  14.982306
9           10  2017-05         23.0  14.982306
10          11  2017-05         23.0  14.982306
11          12  2017-05         23.0  14.982306
12          13  2017-05         23.0  14.982306
13          14  2017-05         23.0  14.982306
14          15  2017-05         23.0  14.982306
15          16  2017-05         23.0  14.982306
16          17  2017-05         23.0  14.982306
17          18  2017-05         23.0  19.253211
18          19  2017-05         23.0  19.253211
19          20  2017-05         23.0  19.253211
20          21  2017-05         23.0  19.253211
21          22  2017-05         23.0  19.793899
22           1  2017-06         22.0   0.000000
23           2  2017-06         22.0   0.000000
24           3  2017-06         22.0  20.346334
25           4  2017-06         22.0  20.346334
26           5  2017-06         22.0  22.545454