熊猫计算列中每个值的出现次数
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
【讨论】:
以上是关于熊猫计算列中每个值的出现次数的主要内容,如果未能解决你的问题,请参考以下文章