【问题标题】:Combine multiple Pandas series with identical column names, but different indices将具有相同列名但索引不同的多个 Pandas 系列组合起来
【发布时间】:2020-06-04 15:53:53
【问题描述】:

我有很多熊猫系列或多或少的结构如下。

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 的帧?

【问题讨论】:

  • 您的输入看起来像一个多索引数据框 btw
  • 我不太确定这是什么意思。

标签: python pandas dataframe


【解决方案1】:

一种方法是分组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

【讨论】:

    猜你喜欢
    • 2021-07-21
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 2020-01-02
    • 2021-02-24
    • 2022-10-18
    • 1970-01-01
    • 2015-04-30
    相关资源
    最近更新 更多