python - 组合多个列名相同但索引不同的 Pandas 系列

标签 python pandas dataframe

我有许多 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/

相关文章:

python - 使用 numpy 数组作为 lambda 参数?

python - 用其上方单元格的值填充 Pandas 数据框中的空白单元格

python - 使用 Pandas 和 Matplotlib 在一个图中绘制 5 个数据帧?

python - 对公司名称的 DataFrame 进行非规范化 [第 1 部分]

python-3.x - 动态创建文件夹并将 csv 文件写入该文件夹

python - 如何从 python 中的箱线图中获取最小值和最大值?

Python3 : detect keypresses asynchronously and communicate them to the main thread

python - Pandas:如何从现有列下的列表列表中插入新数据?

python - 我可以使用 python 检索半径内的多个邮政编码吗

python - 控制 df.at 或 df.loc 的行为