将具有不同开始时间的时间序列转换为Pandas

时间:2018-05-31 23:21:40

标签: python pandas time-series

我每个月都有一个Pandas DataFrame值;每列是一个单独的时间序列,但它们从不同的月份开始。每个系列开始前的值为NaN

df = pd.DataFrame({
    'a': [np.nan, np.nan, 1, 2, 3, 4], 
    'b': [2, 4, 6, 8, 10, 12], 
    'c': [np.nan, -1, -2, -3, np.nan, -5]}, 
    index=pd.date_range('2018-01', '2018-06', freq='MS')
)

              a   b    c
2018-01-01  NaN   2  NaN
2018-02-01  NaN   4 -1.0
2018-03-01  1.0   6 -2.0
2018-04-01  2.0   8 -3.0
2018-05-01  3.0  10  NaN
2018-06-01  4.0  12 -5.0

我希望转换此数据框,以便对于每一列,第一个非空值位于第一行,NaN位于结尾。

这是我最好的尝试:

df.reset_index(drop=True).apply(lambda c: c.shift(-c.first_valid_index()))

     a   b    c
0  1.0   2 -1.0
1  2.0   4 -2.0
2  3.0   6 -3.0
3  4.0   8  NaN
4  NaN  10 -5.0
5  NaN  12  NaN

在熊猫中有没有内置或更自然的方式来做到这一点?这个操作有名字吗?

0 个答案:

没有答案