【问题标题】:merge pandas dataframes on value from column根据列中的值合并熊猫数据框
【发布时间】:2020-02-24 23:02:26
【问题描述】:

我有 3 个 pandas 数据帧,其结构类似于:

pandas1:
date    star    col1    col2    
2019-01-30T00:32:18.128 tau_Cet 12  25
2019-01-30T00:34:05.525 tau_Cet 23  466
2019-01-03T03:54:59.886 HD_41248    344 997
2019-01-06T03:54:25.886 51_Peg  353 458


pandas2:
date    star    col3    col4    
2019-01-30T00:32:18.128 tau_Cet 1   2
2019-01-30T00:34:05.525 tau_Cet 2   4
2019-01-03T03:54:59.886 HD_41248    34  99
2019-01-06T03:54:25.886 51_Peg  33  45


pandas3:
date    star    col5    col 4   
2019-01-30T00:32:18.128 tau_Cet 4   2
2019-01-30T00:34:05.525 tau_Cet 5   4
2019-01-03T03:54:59.886 HD_41248    3   99
2019-01-06T03:54:25.886 51_Peg  333 45

如何将它们全部合并到 date 字段中?

一些属性:

  • 构建每个数据帧的数据是从单独的制表符分隔文件中读取的

  • date 字段对于每个 pandas 的每一行都是唯一的,d 将是所有参数之间的链接键;

  • col1-5 列中的数据可能来自不同的类型(字符串、浮点数、日期等)

  • col1-5 可能有也可能没有相同的标题。如果标题相同,则表值也将相同。

预期的最终结果:

pandasMerged
date    star    col1    col2    col3    col4    col5
2019-01-30T00:32:18.128 tau_Cet     12  25  1   2   4
2019-01-30T00:34:05.525 tau_Cet     23  466 2   4   5
2019-01-03T03:54:59.886 HD_41248    344 997 34  99  3
2019-01-06T03:54:25.886 51_Peg      353 458 33  45  333

有什么想法/建议吗?

谢谢 豪尔赫

【问题讨论】:

标签: pandas dataframe merge


【解决方案1】:

在列表理解中使用concatDataFrame.set_index 在第一步中,然后使用DataFrame.loc 删除重复的列,使用Index.duplicated 删除反向掩码,最后将MultiIndex 转换为DataFrame.reset_index 的列:

dfs = [pandas1,pandas2,pandas3]

df = pd.concat([x.set_index(['date','star']) for x in dfs], axis=1)
df = df.loc[:, ~df.columns.duplicated()].reset_index()
print (df)
                      date      star  col1  col2  col3  col4  col5
0  2019-01-30T00:32:18.128   tau_Cet    12    25     1     2     4
1  2019-01-30T00:34:05.525   tau_Cet    23   466     2     4     5
2  2019-01-03T03:54:59.886  HD_41248   344   997    34    99     3
3  2019-01-06T03:54:25.886    51_Peg   353   458    33    45   333

【讨论】:

    猜你喜欢
    • 2018-09-05
    • 1970-01-01
    • 2017-09-15
    • 2021-03-06
    • 1970-01-01
    • 2019-07-20
    • 2016-10-31
    • 2020-12-27
    • 2017-11-30
    相关资源
    最近更新 更多