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

时间:2020-06-04 15:53:53

标签: python pandas dataframe

我有许多大熊猫系列,结构大致如下。

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)仅创建一个系列,而忽略列名。

concat中是否有一个可以产生所需结果的参数?还是有其他功能可以将不正确的,用nan填充的数据帧折叠成没有重复列且没有nan的帧?

1 个答案:

答案 0 :(得分: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