熊猫计算列中每个值的出现次数

Posted

技术标签:

【中文标题】熊猫计算列中每个值的出现次数【英文标题】:Pandas count the occurrences of each value in column 【发布时间】:2018-07-17 22:52:34 【问题描述】:

我有这个数据框:

我想要一个新列,它只计算 MatchID 列中 matchID 的第一个实例。

具体来说,它会检查 matchID 以查看它是否是唯一的。如果它是唯一的,它会将输入 1 放在新的列行中。如果它不是唯一的,而是 matchID 的第一个实例,它还在新列中输入 1。如果它是重复的而不是第一个实例,它将在新列中放置一个零。

任何帮助都会令人惊叹。从 excel 切换到 pandas 比预期的要困难得多:)。

提前致谢。

【问题讨论】:

你的条件是否可以恢复为一个:如果是第一次出现 MatchID,则为 1,否则为 0?因此,您严重依赖索引(它定义了 DataFrame 的行顺序),可以吗? 不要发布你的数据框的图片。发布几行,以便人们可以剪切和粘贴以轻松重现您的问题。阅读如何创建minimal reproducible example。 【参考方案1】:

怎么样:

df['Count'] = (~df['MatchID'].duplicated()).astype(int)

【讨论】:

我觉得@Ben 的解决方案很好,为什么要加上keep=False【参考方案2】:

这是一种基于示例 DataFrame 的方法:

# Some dummy data. The field ID is equivalent to MatchID
df = pd.DataFrame([("A",12),("B", 12), ("A",123)], columns=["id","val"])
# Create a temporary subset of the DF that matches the "first or unique" rule
first_or_unique = df.drop_duplicates(subset="id", keep="first")
# Populate the new match lookup series with 0 for all rows to begin with
df["match"] = 0
# Finally, use `.loc` along with the temporary DF's index to set the relevant
# rows to be 1
df.loc[first_or_unique.index.values, "match"] = 1

【讨论】:

以上是关于熊猫计算列中每个值的出现次数的主要内容,如果未能解决你的问题,请参考以下文章

Pandas - 计算并获取列中字符串值的唯一出现次数

如何计算熊猫系列列表中每个元素的出现次数?

火花数据集:如何从列中获取唯一值的出现次数

Transact-SQL计算整个表中所有值的出现的次数

是否可以计算每个键在 JSON 列中出现的次数?

计算数据框列中真/假的出现次数