在Pandas中,可以通过merge()函数合并两个数据框。然而,当合并"不匹配的"时间序列时,需要进行一些额外的步骤。
以下是合并 "不匹配的 "时间序列的详细讲解:
- 首先,导入Pandas库并创建两个DataFrame,注意这两个DataFrame具有不同的时间索引:
import pandas as pd
df1 = pd.DataFrame({'date': ['2021-01-01', '2021-01-02', '2021-01-03'],
'value1': [1, 2, 3]})
df1['date'] = pd.to_datetime(df1['date'])
df1.set_index('date', inplace=True)
df2 = pd.DataFrame({'date': ['2021-01-01', '2021-01-03', '2021-01-04'],
'value2': [4, 5, 6]})
df2['date'] = pd.to_datetime(df2['date'])
df2.set_index('date', inplace=True)
- 然后,使用concat()函数(注意不是merge()函数)将两个DataFrame合并,指定join参数为'outer'表示使用外连接。这会导致新的DataFrame具有两个DataFrame的所有行和所有列:
merged = pd.concat([df1, df2], join='outer', axis=1)
print(merged)
输出结果:
value1 value2
date
2021-01-01 1.0 4.0
2021-01-02 2.0 NaN
2021-01-03 3.0 5.0
2021-01-04 NaN 6.0
- 最后,使用fillna()函数填充NaN值,使用前一个非NaN值进行填充,或者使用0进行填充:
merged.fillna(method='ffill', inplace=True)
print(merged)
输出结果:
value1 value2
date
2021-01-01 1.0 4.0
2021-01-02 2.0 4.0
2021-01-03 3.0 5.0
2021-01-04 3.0 6.0
现在,我们已经成功地合并了不匹配的时间序列,并使用前一个非NaN值进行填充。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何用Pandas合并 “不匹配的 “时间序列 - Python技术站