两个df都有范围不同的日期索引date,df1的数据列名为AA,df2的数据列名为BB,怎么保证合并后的df_new兼具df1和df2的日期范围,同时,有AA列和BB列的数据
时间: 2024-10-08 18:22:49 浏览: 25
把这两个表中 【证券简称 证券代码 统计截止日期】相同的数据的数据合并, 然后先根据证券代码从大到小分组,然后在组内根
如果你想合并两个日期索引(date)范围不同的DataFrame,df1和df2,并保持它们各自的完整日期范围以及对应的列AA和BB,你需要使用`merge`或`concat`函数结合`asof`或`nearest`方法,如果日期不完全匹配的话。以下是基本步骤:
```python
import pandas as pd
# 确保df1和df2的日期列都是datetime类型
df1['Date'] = pd.to_datetime(df1['Date'])
df2['Date'] = pd.to_datetime(df2['Date'])
# 对于merge:
df_new = pd.merge_asof(df1, df2, on='Date', by=['Date'], tolerance='same_day')
# 或者对于concat:
df1.sort_values('Date', inplace=True) # 确保df1按日期排序
df2.sort_values('Date', inplace=True)
df_new = pd.concat([df1, df2]).sort_index() # 合并后重新排序
df_new = df_new[['Date', 'AA', 'BB']].drop_duplicates(subset='Date') # 删除重复日期
```
这个操作会保留所有日期(包括未出现在另一个DataFrame中的日期),并且列AA和BB都会存在。
阅读全文