python - python Count 栏目

我正在尝试使用每个属性(数字)的 count 创建新列,但它给了我行的总 count 如下所示

POM = pd.read_excel('POM.xlsx' , sheet_name='Sheet1')
POM['Merged']=POM['ACD ID'].astype(str)+PG['Date'].astype(str)
POM['Count']=POM['Merged'].count()
print(POM.head(2))
POM.to_excel('Test.xlsx' , index=False)

结果

Date  ACD ID           Merged  Count
0 2022-03-08   14004  140042022-03-08    986
1 2022-03-09   14004  140042022-03-09    986

我怎样才能 count 在列(合并)中找到重复的唯一代码?

# Date              ACD ID     Merged     Count
2022-03-08 00:00:00 14004   140042022-03-08 10
2022-03-09 00:00:00 14004   140042022-03-09 49
2022-03-10 00:00:00 14004   140042022-03-10 62

我尝试了下面的代码作为回答&我找到了准确的答案,但同时我由组(date+ ACD ID)创建的合并新库不准确,如下所示,date in(合并)不是匹配 date

POM = pd.read_excel('POM.xlsx' , sheet_name='Sheet1')
POM['Merged']=POM['ACD ID'].astype(str)+PG['Date'].astype(str)
#POM['Count'] = POM['Merged'].count()
POM['Count'] = POM['Merged'].copy().replace(POM['Merged'].value_counts().to_dict())
#POM['Count']=POM.groupby(["Merged"])["Merged"].transform("count")
#POM['counts'] = POM['Merged'].map(POM['Merged'].value_counts())

print(POM.head(6))
#POM.to_excel('Test.xlsx' , index=False)

结果

Date  ACD ID           Merged  Count
0 2022-03-08   14004  140042022-03-08      1
1 2022-03-08   14005  140052022-03-09      1
2 2022-03-08   14006  140062022-03-10      1
3 2022-03-08   14007  140072022-03-15      1

回答1

尝试 groupby() 然后 transform("count")

import pandas

df = pandas.DataFrame({"date": ["2022", "2023", "2023", "2024"],
                       "id": ["a", "a", "a", "c"]})
df["merged"] = df["date"] + "_" + df["id"]
print(df)
>    date id  merged
  0  2022  a  2022_a
  1  2023  a  2023_a
  2  2023  a  2023_a
  3  2024  c  2024_c

df["counts"] = df.groupby(["merged"])["merged"].transform("count")
print(df)
>    date id  merged  counts
  0  2022  a  2022_a       1
  1  2023  a  2023_a       2
  2  2023  a  2023_a       2
  3  2024  c  2024_c       1

查看https://stackoverflow.com/questions/17709270/create-column-of-value-counts-in-pandas-dataframe

回答2

你可以这样做:

df['Count'] = df['Merged'].copy().replace(df['Merged'].value_counts().to_dict())

您创建 Merged 的副本,然后在 Merged 中创建 count values 并将其转换为 {id: count} 的字典,然后使用该字典替换复制的 Merged 列中的 id values。

这比 groupby 有额外的好处,您可以保留数据框的原始索引和形状,同时仍然填写每个 ID 的 counts。

前任:

df = pd.DataFrame({"date": ["2022", "2023", "2023", "2024"],
                       "id": ["a", "a", "a", "c"]})
df["merged"] = df["date"] + "_" + df["id"]
df['Count'] = df['merged'].copy().replace(df['merged'].value_counts().to_dict())

   date id  merged  Count
0  2022  a  2022_a      1
1  2023  a  2023_a      2
2  2023  a  2023_a      2
3  2024  c  2024_c      1

相似文章

json - 如何使用 JSONATA 对 JSON 数据执行分组

我有一个下面给出的JSON结构。我想对这些数据执行一些转换。我开始了解JSONATA并且它对我来说看起来很棒,但是由于我是新手,所以我在转型方面有点挣扎。我想计算给定date的每个模块date的总计数...

随机推荐

最新文章