我有一个相当简单的循环,运行良好,但需要的时间比我想象的要长(约5分钟)。
for i in range(len(df)):
if pd.isnull(df['Date'][i]):
df['Date'][i] = df['Date'][i-1]
此处的目的是在我拥有的数据文件中修复日期和时间,其中每天的第一行包含日期的文本,但所有其他行都为空白。我只是想查看值是否为null,如果是,则将其设置为之前的值。
是否有更多Pandas-y方式更有效地做到这一点?
谢谢, 本
答案 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