我有许多大熊猫系列,结构大致如下。
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的帧?
答案 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