如何在 Pandas.merge 中删除 "_merge" 列

3
我正在根据准确性对两个数据框进行排序。所以我首先使用严格的条件将两个df合并成一个,how='outer', indicator=True,然后将其保存到名为'perfect'的df中。之后我从_merge列中提取出left_only和right_only到两个新的dfs中。然后我将这两个df与简单条件 how='outer', indicator=True 合并,并将新的df保存为'partial match'。但是当我这样做时,我遇到了错误ValueError: Cannot use name of an existing column for indicator column,因为我再次使用了indicator = True,但我需要该指标应用于不匹配的行(即左侧和右侧仅出现一次),并将它们放到更简单的条件中。
如何删除合并列?或者如何解决此ValueError?
_merge未出现在df.columns中,因此我无法drop(['_merge') or del df._merge
1个回答

2
请用'string'替代True作为指示符indicator。如果将indicator设为True,输出的DataFrame会增加一个名为“_merge”的列,其中包含每行数据源的信息。如果将其设为字符串,则会在输出的DataFrame中添加一列包含每行数据源信息,并以该字符串命名该列。信息列是分类类型,并采用以下值:“left_only”表示只在“left” DataFrame中出现合并键的观测值,“right_only”表示只在“right” DataFrame中出现合并键的观测值,“both”表示合并键同时出现在两个DataFrame中。第二次合并时,请使用不同的'string'作为指示符。详见文档
dfA = pd.DataFrame({'key':np.arange(0,10), 'dataA':np.arange(100,110)})
dfB = pd.DataFrame({'key':np.arange(5,15), 'dataB':np.arange(100,110)})
dfA.merge(dfB, on='key', indicator='Ind', how='outer')

输出:

    key  dataA  dataB         Ind
0     0  100.0    NaN   left_only
1     1  101.0    NaN   left_only
2     2  102.0    NaN   left_only
3     3  103.0    NaN   left_only
4     4  104.0    NaN   left_only
5     5  105.0  100.0        both
6     6  106.0  101.0        both
7     7  107.0  102.0        both
8     8  108.0  103.0        both
9     9  109.0  104.0        both
10   10    NaN  105.0  right_only
11   11    NaN  106.0  right_only
12   12    NaN  107.0  right_only
13   13    NaN  108.0  right_only
14   14    NaN  109.0  right_only

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接