我正在根据它的准确性对两个数据进行排序。因此,我首先将带有严格条件的2df与how='outer', indicator=True合并,然后将其保存到一个称为“完美”的df中。稍后,我将left_only and right_only从_merge列提取到两个新的dfs。然后将这两个df与简单条件how='outer', indicator=True合并,并将新df保存为“部分匹配”。但是当我这样做的时候,我得到了eeror ValueError: Cannot use name of an existing column for indicator column,因为我再次使用了indicator = True,但是我需要这个指示符来申请不匹配的行(即左只和右),并将它们放在更简单的条件下。
如何删除合并列?或者如何删除这个ValueError?
_merge它没有出现在df.columns中,所以我不能drop(['_merge') or del df._merge
发布于 2020-05-11 00:51:29
用'string‘表示indicator而不是True。见文档
indicatorbool或str默认为False,如果为True,则添加一个列输出名为“DataFrame”的“_merge”,其中包含每一行的源信息。如果是字符串,每一行源信息的列将被添加到输出DataFrame中,列将被命名为string的值。信息列是分类类型的,其值为“left_only”,其合并键只出现在“左”DataFrame中,“right_only”表示其合并键只出现在‘右’DataFrame中,而“两者都出现”时,则为“两者”。
然后在第二次合并时,使用不同的“字符串”作为指示符。
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_onlyhttps://stackoverflow.com/questions/61720614
复制相似问题