我正在尝试合并两个数据框。每个数据框都有两个索引级别(日期、cusip)。例如,在列中,某些列在两者之间匹配(货币、调整日期)。
按索引合并这些的最佳方法是什么,但不要复制两份货币和调整日期。
每个数据框有 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()
方法)。
dfNew = merge(df, df2[cols_to_use], left_index=True, right_index=True, how='outer')
这将避免任何列在合并中发生冲突。
关于python - Pandas Merge - 如何避免重复列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19125091/