Python熊猫:如何在dataframe列中现有值之间填充值?

时间:2019-06-14 11:31:26

标签: python pandas dataframe

我有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

我以后对插值排序没有问题,但是我还没有弄清楚如何进行采样。

2 个答案:

答案 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()