首页 > 解决方案 > 替换熊猫数据框列中重复的值

问题描述

假设我有下表列出了一个单位的制造商。

import pandas as pd
df = pd.DataFrame({'Maker': ['Company1ID', 'SusanID', 'CeramiCorpID', 'PeterID', 'SaraID', 'CeramiCorpID', 'Company1ID']})
print(df)

现在考虑我有一个更大的表,其中包含多个人员和公司 ID,我想将它们重新分类为两类,人员公司已在预期列中显示。ID 比显示的要复杂得多(例如:f00568ab456b)并且对于每个人或公司都是唯一的,但只有公司出现在不同的行中。

| Maker        | Expected |
|--------------|----------|
| Company1ID   | Corp     |
| SusanID      | Person   |
| CeramiCorpID | Corp     |
| PeterID      | Person   |
| SaraID       | Person   |
| CeramiCorpID | Corp     |
| Company1ID   | Corp     |

我基本上被困在试图了解我是否需要在.duplicated(keep=False)上使用某种条件时使用.apply(lamba x).replace。我不确定如何去做。

帮助表示赞赏!

标签: python-3.xpandasduplicates

解决方案


我不确定这是您想要的,但您可以像这样创建“预期”列:

df['Expected'] = ['Corp' if 'Corp' in maker else 'Person' for maker in df['Maker']]

编辑:如果您希望它们按出现次数分类:

df['Expected'] = ['Corp' if len(df[df['Maker'] == maker]) > 1 else 'Person' for maker in df['Maker']]

这将假设没有只出现一次的 Corp。但如果是这样的话,那么我怎么知道它是一个人还是一个公司?


推荐阅读