我正在尝试在两个数据帧之间合并。每个数据帧都有两个索引级别(日期,客户)。在列中,例如,某些列在两者之间匹配(货币,日期)。
按索引合并这些内容的最佳方法是什么,但不要采用两个副本的货币和日期。
每个数据框都是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中的列,并使用它来选择合并中列的子集。
cols_to_use = df2.columns.difference(df.columns)
然后执行合并(请注意,这是一个索引对象,但是它有一个方便的tolist()方法)。
tolist()
dfNew = merge(df, df2[cols_to_use], left_index=True, right_index=True, how='outer')
这将避免合并中的任何列冲突。