python - 重采样后合并 pandas DataFrame

标签 python pandas datetime dataframe merge

我有一个带有日期时间索引的 DataFrame。

df1=pd.DataFrame(index=pd.date_range('20100201', periods=24, freq='8h3min'),
                data=np.random.rand(24),columns=['Rubbish'])
df1.index=df1.index.to_datetime()

我想重新采样这个 DataFrame,如下所示:

df1=df1.resample('7D').agg(np.median)

然后我有另一个 DataFrame,具有不同频率的索引并从不同的偏移时间开始

df2=pd.DataFrame(index=pd.date_range('20100205', periods=24, freq='6h3min'),
                data=np.random.rand(24),columns=['Rubbish'])
df2.index=df2.index.to_datetime()
df2=df2.resample('7D').agg(np.median)

这些操作独立运行得很好,但是当我尝试使用

合并结果时
print(pd.merge(df1,df2,right_index=True,left_index=True,how='outer'))

我得到:

Rubbish_x  Rubbish_y
2010-02-01   0.585986        NaN
2010-02-05        NaN   0.423316
2010-02-08   0.767499        NaN

虽然我想使用相同的偏移量重新采样,并在合并后得到以下结果

            Rubbish_x  Rubbish_y
2010-02-01   AVALUE        AVALUE
2010-02-08   AVALUE        AVALUE

我尝试了以下方法,但它只生成 nans

df2.reindex(df1.index)

print(pd.merge(df1,df2,right_index=True,left_index=True,how='outer'))

我必须坚持使用pandas 0.20.1

我尝试过mergeas_of

df1.index
Out[48]: Index([2015-03-24, 2015-03-31, 2015-04-07, 2015-04-14, 2015-04-21, 2015-04-28], dtype='object')

df2.index
Out[49]: Index([2015-03-24, 2015-03-31, 2015-04-07, 2015-04-14, 2015-04-21, 2015-04-28], dtype='object')
output=pd.merge_asof(df1,df2,left_index=True,right_index=True)

但它因以下回溯而崩溃

Traceback (most recent call last):


TypeError: 'NoneType' object is not callable

最佳答案

我相信需要merge_asof :

print(pd.merge_asof(df1,df2,right_index=True,left_index=True))
            Rubbish_x  Rubbish_y
2010-02-01   0.446505        NaN
2010-02-08   0.474330   0.606826

或者参数method='nearest'reindex :

df2 = df2.reindex(df1.index, method='nearest')
print (df2)
             Rubbish
2010-02-01  0.415248
2010-02-08  0.415248

print(pd.merge(df1,df2,right_index=True,left_index=True,how='outer'))
            Rubbish_x  Rubbish_y
2010-02-01   0.431966   0.415248
2010-02-08   0.279121   0.415248

关于python - 重采样后合并 pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50734036/

相关文章:

python - 如何使用 Twisted Trial 对 Autobahn 应用程序进行单元测试?

python - 添加重复序列值的列

python-3.x - 为什么 `df.lookup` 比 `df.min` 慢?

python - 如何按唯一组拆分数据框并保存到 csv

python - 查找一个序列并删除之前的条目

javascript - IE8 和 IE9+ 的日期上 toJSON() 的结果不同

c# - 将 Jalali 月份添加到 Jalali 日期

java SimpleDateFormat.Parse

python - 字典键字符串

python - ipdb 中的后续 "list"命令