python - 在 python 中插入/推断丢失的日期?

标签 python pandas scipy interpolation extrapolation

假设我有以下数据框

bb = pd.DataFrame(data = {'date' :['','','','2015-09-02', '2015-09-02', '2015-09-03','','2015-09-08', '', '2015-09-11','2015-09-14','','' ]})     
bb['date'] = pd.to_datetime(bb['date'], format="%Y-%m-%d")     

我想线性插值和外插以填充缺失的日期值。我使用了以下代码,但它没有改变任何东西。我是 Pandas 的新手。请帮忙

bb= bb.interpolate(method='time')

最佳答案

要进行推断,您必须使用 bfill()ffill()。缺失值将由后向(或前向)值分配。

要进行线性插值,您必须使用函数 interpolate 但日期需要转换为数字:

import numpy as np
import pandas as pd
from datetime import datetime

bb = pd.DataFrame(data = {'date' :['','','','2015-09-02', '2015-09-02', '2015-09-03','','2015-09-08', '', '2015-09-11','2015-09-14','','' ]})     
bb['date'] = pd.to_datetime(bb['date'], format="%Y-%m-%d")     

# convert to seconds
tmp = bb['date'].apply(lambda t: (t-datetime(1970,1,1)).total_seconds())
# linear interpolation
tmp.interpolate(inplace=True)    
# back convert to dates
bb['date'] = pd.to_datetime(tmp, unit='s') 
bb['date'] = bb['date'].apply(lambda t: t.date())
# extrapolation for the first missing values
bb.bfill(inplace='True')

print bb

结果:

         date
0  2015-09-02
1  2015-09-02
2  2015-09-02
3  2015-09-02
4  2015-09-02
5  2015-09-03
6  2015-09-05
7  2015-09-08
8  2015-09-09
9  2015-09-11
10 2015-09-14
11 2015-09-14
12 2015-09-14

关于python - 在 python 中插入/推断丢失的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37783842/

相关文章:

python - 卷积:2d 与 1d 2-pass 给出不同的结果

Python Dictionary DataStructure 哪个方法 d[] 或 d.get()?

python - 每小时直方图 - matplotlib

python - 曲线下面积是否有可能 = 0?

python - 在python中将png图像转换为一个pdf

python - 如何改变 pandas 数据框结构?

python - 如何使用前一列中两列的键创建一个新的 pandas 数据框?

python - 有没有办法通过 Pandas 中两列的逻辑比较进行分组?

python - Python 中的多元回归

python - 在使用 numpy 读取 txt 文件时跳过包含字符串的结尾行以生成数值数组