在此输入图像描述 我的数据框看起来像上面的屏幕截图,没有最后一列。粘贴下面的 print(df)。
ID1 ID2 INTERNAL_ID DDD_OUTLET_ID SRA_2 SRA_4 Prd_Name Doses Data_Available
3 3 C344205 93449151 93449151 ASN PCV20 30 DDD Level
3 3 C375032 93449151 93449151 ASN PCV20 30 DDD Level
3 3 C390019 93449151 93449151 ASN PCV20 30 DDD Level
3 2 C10317637 94002154 94002154 ASN PCV13 0 DDD Level
3 2 C10350055 94002154 94002154 ASN PCV13 0 DDD Level
3 2 C10317637 94002154 94002154 ASN PCV20 90 DDD Level
3 2 C10350055 94002154 94002154 ASN PCV20 90 DDD Level
3 M990134 85027174 85027174 ASN PCV13 0 DDD Level
3 M990134 85027174 85027174 ASN PCV13 0 DDD Level
3 C1007843 85027174 85027174 ASN PCV13 0 DDD Level
3 C1007843 85027174 85027174 ASN PCV20 30 DDD Level
我想根据 Assoc ID、SRA_2 和 Prd_Name 对 pandas 中的上述数据进行分组,并在新列“Cnt”中获取每个组的计数,同时保留所有相同的行和列。 所以我从 11x18 形状数据框开始,最终得到 11x19 形状数据框,其中包含来自 group by 的新计数列。
还有其他选择吗?
我正在使用变换,但没有得到想要的结果。
df['Cnt'] = df.groupby(['Assoc_ID', 'SRA_2', 'Prd_Name'])['SRA_2'].transform('count')
您对数据进行分组和计数的代码是正确的,但我在 DataFrame 中没有找到 Assoc_ID 列,没有在文本中找到,也没有在屏幕截图中找到。
尝试使用此代码来测试计数的想法:
import pandas as pd
data = {
'a': [1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3],
'b': [1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3],
'c': ['X', 'X', 'X', 'Y', 'Y', 'Z', 'Z', 'X', 'X', 'Y', 'Y']
}
df = pd.DataFrame(data)
df['count'] = df.groupby(['a', 'b', 'c'])['c'].transform('count')
print(df)
也许您在计数之前对数据框进行了一些更改,请提供完整的代码以查看是否还有其他问题。