为下面的所有行分配日期,直到下一个日期

时间:2018-11-18 00:52:44

标签: python dataframe data-manipulation

df

index      col1
------------------------
0          2017-01-01
1          a
2          b
3          c
4          2017-01-02
5          d
6          e
7          f
8          2017-01-03
9          g
10         h
11         i

预期df

index      col1              col2
------------------------------------------
0          2017-01-01        a
1          2017-01-01        b
2          2017-01-01        c
3          2017-01-02        d
4          2017-01-02        e
5          2017-01-02        f
6          2017-01-03        g
7          2017-01-03        h
8          2017-01-03        i

我想为日期下面的所有值分配日期,并将它们放在col1的两个不同列(col1和col2)下的同一行上。

2 个答案:

答案 0 :(得分:0)

遵循以下原则:

keep_rows = df['col1'].str.len() == 1 # These rows do not have dates
df['col2'] = np.nan
df.loc[~keep_rows, 'col2'] = df.loc[~keep_rows, 'col1']
df['col2'] = df['col2'].ffill()
df = df.loc[keep_rows]

答案 1 :(得分:0)

在创建 datetime K.clear_session() 之后,对熊猫数据框/系列在ffill中使用向前填充(fillna)方法。

col2