我有3列的pandas DataFrame。第一列包含以特定频率(e.g. '20173070000', '20173070020', '20173070040', etc.)
以升序排列的字符串值。第二和第三列包含相应的整数值。我想将第一列重新采样到每个列-'20173070000','20173070001','20173070002',同时用NaN
值填充第二列和第三列,然后我想对这些{ {1}}个值。
我已经研究过重新采样数据,但这似乎仅适用于NaN
值。我也研究了pd.interpolate,但这似乎可以在缺失值之间进行插值。如上所述,我的数据集不包含丢失的数据。我只是想增加输入频率-在现有值之间填充。
为了提供一些参考,我当前的DataFrame如下所示:
timedate
我想生成一个看起来像这样的DataFrame:
0 1 2
0 20173070000 14.0 13.9
1 20173070020 14.1 14.1
2 20173070040 13.8 13.6
3 20173070060 13.7 13.7
4 20173070080 13.8 13.5
5 20173070100 13.9 14.0
我以后对插值排序没有问题,但是我还没有弄清楚如何进行采样。
答案 0 :(得分:8)
您可以只使用重新索引功能。默认情况下,它将NaN放置在“新”索引中没有值的位置。
df = pd.DataFrame({'A': [20173070000, 20173070020, 20173070040, 20173070060, 20173070080, 20173070100 ],
'B': [14, 14.1, 13.8, 13.7, 13.8, 13.9],
'C': [13.9, 14.1, 13.6, 13.7, 13.5, 14.0] })
df.set_index('A').reindex(np.arange(np.min(df.A), np.max(df.A)+1) ).reset_index()
答案 1 :(得分:0)
我相信interpolate()是您的理想选择。按照说明进行上采样后,将包含要插入的值的列称为“ val1”,您可以执行以下操作:
df.loc[:, 'val1'] = df.loc[:, 'val1'].interpolate()