如何为/ if循环加速简单的Pandas?

时间:2017-06-16 05:48:31

标签: python pandas

我有一个相当简单的循环,运行良好,但需要的时间比我想象的要长(约5分钟)。

for i in range(len(df)):
    if pd.isnull(df['Date'][i]):
        df['Date'][i] = df['Date'][i-1]

此处的目的是在我拥有的数据文件中修复日期和时间,其中每天的第一行包含日期的文本,但所有其他行都为空白。我只是想查看值是否为null,如果是,则将其设置为之前的值。

enter image description here

是否有更多Pandas-y方式更有效地做到这一点?

谢谢, 本

1 个答案:

答案 0 :(得分:4)

使用向前填充ffill

df.Date.ffill(inplace=True)

演示

df = pd.DataFrame(dict(
        Date=['Wed', None, None, 'Thr', None, None],
        Time=[1, 2, 3, 4, 5, 6]
    ))

df

   Date  Time
0   Wed     1
1  None     2
2  None     3
3   Thr     4
4  None     5
5  None     6

然后

df.Date.ffill(inplace=True)

df

  Date  Time
0  Wed     1
1  Wed     2
2  Wed     3
3  Thr     4
4  Thr     5
5  Thr     6