python教程—熊猫合并-如何避免重复的列-Python实用宝典

python教程—熊猫合并-如何避免重复的列

我正在尝试合并两个数据帧。每个数据帧都有两个索引级别(date、cusip)。在列中,有些列匹配这两个列(货币,adj日期)。

我正在尝试合并两个数据帧。每个数据帧都有两个索引级别(date、cusip)。在列中,有些列匹配这两个列(货币,adj日期)。

什么是最好的方法来合并这些按索引,但不采取两个副本的货币和adj日期。

每个数据帧都是90列,所以我尽量避免手工编写所有内容。

    df: currency adj_date data_col1 ... date cusip 2012-01-01 XSDP USD 2012-01-03 0.45 ... df2: currency adj_date data_col2 ... date cusip 2012-01-01 XSDP USD 2012-01-03 0.45 ...

如果我做的事:

    dfNew = merge(df, df2, left_index=True, right_index=True, how='outer')

我得到

    dfNew: currency_x adj_date_x data_col2 ... currency_y adj_date_y date cusip 2012-01-01 XSDP USD 2012-01-03 0.45 USD 2012-01-03

谢谢你!

回答

您可以计算出仅位于一个dataframe中的列,并使用它来选择merge中的列子集

    cols_to_use = df2.columns - df.columns

然后使用这个(注意,这是一个索引对象,但它有一个方便的tolist()方法)执行合并

    dfNew = merge(df, df2[cols_to_use], left_index=True, right_index=True, how='outer')

这将避免合并中的任何列冲突

对于0.15及以上版本,新的首选语法是:

    cols_to_use = df2.columns.difference(df.columns)

由于@odedbd

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论