pandas 如何在Python中创建一组组数据和计数细节

jfewjypa  于 2023-08-01  发布在  Python
关注(0)|答案(2)|浏览(149)

目前我想有这样的数据

data = {
'A': ['2023-07-01'] * 6 + ['2023-07-02'] * 5,
'data1': ['abnormal'] * 11,
'data2': ['X', 'X', 'X', 'Y', 'Y', 'Z', 'X', 'Y', 'Z', 'Z', 'A'],
'Data3': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110],
'Data4': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
}

字符串
x1c 0d1x的数据
目前我做的是groupby A聚合来计数记录,得到不同的计数,找到不同的值

def create_set_ori(x):
return sorted(set(x))

result = df.groupby(['A']).agg({
  'data1': 'count',
  'data2': [pd.Series.nunique, create_set_ori]
  }).reset_index()

result.columns = ['_'.join(col).strip() for col in result.columns.values]


哪种产品结果为



现在,我想升级create_set_ori函数,以提供额外的信息,计数发生细节事件发生,并将事件计数器按格式排序
(data 2,n)以及按n排序
例如
| data1_count| data2_nunique| data2_create_set| data2_create_set |
| --|--|--| ------------ |
| 六|三个|[(X,3),(Y,2),(Z,1)]| [(X, 3), (Y, 2), (Z, 1)] |
| 五|四|[(Z,2),(X,1),(Y,1),(A,1)]| [(Z, 2), (X, 1), (Y, 1), (A, 1)] |
我在想我该怎么保存呢?

mbyulnm0

mbyulnm01#

让我们使用collections模块中的Counter

from collections import Counter

def create_set_ori(x):
    return [*Counter(x).most_common()]

个字符

kkbh8khc

kkbh8khc2#

如果我理解正确的话,我认为你想从收藏中导入Counter。
Counter将返回一个dict,其中项作为键,计数作为值。
它将返回:

{'x': 3, 'y': 2, 'z':1}

字符串
https://docs.python.org/3/library/collections.html

相关问题