我有许多 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)
简单地创建一个系列,忽略列名。concat 中是否有一个参数可以产生我想要的结果?或者是否有其他函数可以将不正确的、填充为 nan 的数据框折叠为具有非重复列且没有 nans 的框架?
最佳答案
一种方法是 groupby 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
关于python - 组合多个列名相同但索引不同的 Pandas 系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62198953/