我有以下pd数据帧。Pandas在列间插入日期
import pandas as pd
df = pd.DataFrame([pd.datetime(2016,1,1), pd.datetime(2016,2,1)], columns = ['d1'])
df['d2'] = [pd.datetime(2016,1,5), pd.datetime(2016,2,10)]
df['d3'] = [pd.datetime(2016,1,10), pd.datetime(2016,2,20)]
df['v1'], df['v2'], df['v3'] = [1,10], [5, 100], [5, 100]
df['x1'] = [pd.datetime(2016,1,2), pd.datetime(2016,2,13)]
d1 d2 d3 v1 v2 v3 x1
0 2016-01-01 2016-01-05 2016-01-10 1 5 5 2016-01-02
1 2016-02-01 2016-02-10 2016-02-20 10 100 100 2016-02-13
我想通过内插
x: x1
independent = [d1, d2, d3]
dependent = [v1, v2, v3]
在上面的例子来计算列X2,X2应该是2行0,100为第1行
我能想到使用df.iterrows(),slice [d1-d3]和[v1-v3],然后使用np.interp,但即使这样会变得有点复杂,因为我必须将日期转换为float。 (np.interp只接受浮动列表)。
熊猫内应该有一个更清洁,矢量化的方法吗?
感谢。就像这个想法一样,但是插值需要按行进行。您的示例df2将d行和v行结合在一起。 –
在您提供的示例数据中,每行中的日期形成了不跨行的时段。您的数据中是否会出现这种重叠情况? –
是的,对不起,我的例子很差。有重叠。更好的例子是在第1行中将所有'Feb'替换为'Jan'。 –