首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在_merge中删除“Pandas.merge”列

如何在_merge中删除“Pandas.merge”列
EN

Stack Overflow用户
提问于 2020-05-11 00:46:41
回答 1查看 2.8K关注 0票数 3

我正在根据它的准确性对两个数据进行排序。因此,我首先将带有严格条件的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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-11 00:51:29

用'string‘表示indicator而不是True。见文档

indicatorbool或str默认为False,如果为True,则添加一个列输出名为“DataFrame”的“_merge”,其中包含每一行的源信息。如果是字符串,每一行源信息的列将被添加到输出DataFrame中,列将被命名为string的值。信息列是分类类型的,其值为“left_only”,其合并键只出现在“左”DataFrame中,“right_only”表示其合并键只出现在‘右’DataFrame中,而“两者都出现”时,则为“两者”。

然后在第二次合并时,使用不同的“字符串”作为指示符。

代码语言:javascript
复制
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')

输出:

代码语言:javascript
复制
    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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61720614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档