方法在reindex()

时间:2018-02-07 17:05:54

标签: python-3.x pandas reindex

from pandas import Series, DataFrame
import numpy as np
frame = DataFrame(np.arange(9).reshape((3, 3)), index=['a', 'b', 'c'], columns=['A', 'B', 'C'])
frame2 = frame.reindex(['a', 'b', 'c', 'd'])
frame3 = frame2.reindex(method='ffill')

然后结果如下。

frame
   A  B  C
a  0  1  2
b  3  4  5
c  6  7  8

frame2
     A    B    C 
a  0.0  1.0  2.0
b  3.0  4.0  5.0
c  6.0  7.0  8.0
d  NaN  NaN  NaN

frame3
     A    B    C
a  0.0  1.0  2.0
b  3.0  4.0  5.0
c  6.0  7.0  8.0
d  NaN  NaN  NaN

我打算打印(frame3)的结果是

frame3
    A    B    C
a  0.0  1.0  2.0
b  3.0  4.0  5.0
c  6.0  7.0  8.0
d  6.0  7.0  8.0

我的代码出了什么问题? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

只需使用ffill

frame3=frame2.ffill()
frame3
Out[1382]: 
     A    B    C
a  0.0  1.0  2.0
b  3.0  4.0  5.0
c  6.0  7.0  8.0
d  6.0  7.0  8.0

frame3 = frame.reindex(['a', 'b', 'c', 'd'],method='ffill')
frame3
Out[1384]: 
   A  B  C
a  0  1  2
b  3  4  5
c  6  7  8
d  6  7  8

原因,为什么你的方法不起作用,导致frame2和frame3有相同的索引,reindex里面的ffill是'new'索引,但是frame2和frame3之间没有新的索引