合并具有相同列名但不同索引的多个 Pandas 系列

4

我有很多Pandas系列数据,结构大致如下。

s1                  s2                  s3                 s4
Date    val1        Date    val1        Date   val2        Date    val2
Jan     10          Apr     25          Jan    14          Apr     11
Feb     11          May     18          Feb    17          May     7
Mar     8           Jun     15          Mar    16          Jun     21

我希望将这些系列合并成一个单独的数据框,结构如下:
Date    val1    val2
Jan     10      14
Feb     11      17
Mar     8       16
Apr     25      11
May     18      7
Jun     15      21

为了将它们合并,我尝试使用pd.concat创建这个单一的数据框。然而,我没能做到。使用pd.concat(series, axis=1)的结果(其中series是一个列表[s1,s2,s3,s4])是:

Date    val1    val1    val2    val2
Jan     10      nan     14      nan
Feb     11      nan     17      nan
Mar     8       nan     16      nan
Apr     nan     25      nan     11
May     nan     18      nan     7
Jun     nan     15      nan     21

pd.concat(series, axis=0)仅创建一个单一的series,无视列名。

在concat中是否有参数可以得到我想要的结果?或者是否有其他函数可以将错误的、填充了nan值的数据框合并为具有非重复列且无nan值的框架?


1
你的输入看起来像是一个多级索引的数据框。 - anky
我不太确定那是什么意思。 - John Wendeborn
1个回答

2

一种方法是按Date分组并选择first

(pd.concat( [s1,s2,s3,s4])
   .groupby('Date', as_index=False, sort=False).first()
)

输出:

  Date  val1  val2
0  Jan    10    14
1  Feb    11    17
2  Mar     8    16
3  Apr    25    11
4  May    18     7
5  Jun    15    21

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接