准备要比较的数据帧.索引操作,日期时间及以后



好的,这是一个分两个步骤的问题。

第一步:我有一个熊猫数据帧,如下所示:

         date     time    value
0    20100201        0       12
1    20100201        6       22
2    20100201       12       45
3    20100201       18       13
4    20100202        0       54
5    20100202        6       12
6    20100202       12       18
7    20100202       18       17
8    20100203        6       12
...

如您所见,例如,第7行和第8行之间缺少数据(在本例中,为0时间的值)。有时,可能会错过几个小时甚至一整天。

我想把这个DataFrame转换成这样的格式:

                       value
2010-02-01 00:00:00       12
2010-02-01 06:00:00       22
2010-02-01 12:00:00       45
2010-02-01 18:00:00       13
2010-02-02 00:00:00       54
2010-02-02 06:00:00       12
2010-02-02 12:00:00       18
2010-02-02 18:00:00       17
...

我想要这个,因为我有另一个DataFrame(让我们称之为"可靠的DataFrame"),我确信它没有丢失的值。

编辑2016/07/28:研究该问题时,数据帧中似乎也存在重复数据。请参阅解决方案以解决此问题。

第二步:上一步完成后,我想逐行比较"可靠DataFrame"中的索引与缺少值的DataFrame中的索引。

我想添加一行valueNaN,其中第一个DataFrame中缺少条目。最后的检查是确保两个DataFrames具有相同的维度。

我知道这是一个很长的问题,但我很累。我曾尝试使用dateutil.parser.parse管理日期,并使用set_index作为设置新索引的方法,但代码中有很多错误。恐怕这显然超出了我的熊猫水平。

提前谢谢。

步骤1答案

df['DateTime'] = (df['date'].astype(str) + ' ' + df['time'].astype(str) +':'+'00'+':'+'00').apply(lambda x: pd.to_datetime(str(x)))
df.set_index('DateTime', drop=True, append=False, inplace=True, verify_integrity=False)
df.drop(['date', 'time'], axis=1, level=None, inplace=True, errors='raise')

如果有重复,可以通过以下方式删除:

df = df.reset_index().drop_duplicates(subset='DateTime',keep='last').set_index('DateTime')

步骤2

df_join = df.join(df1, how='outer', lsuffix='x',sort=True)

相关内容

  • 没有找到相关文章

最新更新