如何根据最早和最晚日期连接系列列表

问题描述 投票:0回答:1

您好,我有一个名为 Final_1 的系列列表,其中包含 2000 多个项目,我希望将其连接到整个数据帧中,其中数据帧的索引具有所有日期索引中最早和最新的索引。 Final_1 看起来像这样

         Dates  Values
 0   2020-04-13   529.0
 1   2020-04-20   465.0
 2   2020-04-27   408.0
 3   2020-05-04   374.0
 4   2020-05-11   339.0
 ..         ...     ...
          Dates  Values
 0   2020-03-30    0.09
 1   2020-04-06    0.05
 2   2020-04-13    0.05
 3   2020-04-20    0.05
 4   2020-04-27    0.04
 .....

成品看起来像......

我尝试用 pd.concat(final, axis=1, join='outer') 连接列表,我得到的就是这个

这不是我想要的...

请帮忙?

join merge concatenation
1个回答
0
投票
df1 = pd.DataFrame({
    'Dates': ['2020-04-13', '2020-04-20', '2020-04-27', '2020-05-04', '2020-05-11'],
    'Values': [529.0, 465.0, 408.0, 374.0, 339.0]
})

df2 = pd.DataFrame({
    'Dates': ['2020-03-30', '2020-04-06', '2020-04-13', '2020-04-20', '2020-04-27'],
    'Values': [0.09, 0.05, 0.05, 0.05, 0.04]
})

# Convert 'Dates' column to datetime for proper merging and sorting
df1['Dates'] = pd.to_datetime(df1['Dates'])
df2['Dates'] = pd.to_datetime(df2['Dates'])

# Full outer join
combined_df = pd.merge(df1, df2, on='Dates', how='outer', suffixes=('_left', '_right'))

# Sort df and rename cols
combined_df.sort_values(by='Dates', inplace=True)
combined_df.rename(columns={'Values_left': 'Values', 'Values_right': 'NA'}, inplace=True)

# Fill NaN with 'NA' strings
combined_df['Values'] = combined_df['Values'].fillna('NA')
combined_df['NA'] = combined_df['NA'].fillna('NA')

© www.soinside.com 2019 - 2024. All rights reserved.