How to assign a name to the a size() column?
我正在GroupBy结果上使用.size(),以便计算每组中有多少项。
我希望将结果保存到一个新的列名,而不手动编辑列名数组,如何完成?
谢谢
这就是我所尝试的:
1 2 3 | grpd = df.groupby(['A','B']) grpd['size'] = grpd.size() grpd |
我得到的错误是:
TypeError: 'DataFrameGroupBy' object does not support item assignment
(on the second line)
dataframegroupby对象的
1 | grpd = df.groupby(['A','B']).size().to_frame('size') |
如果您希望组再次成为列,可以在末尾添加一个
似乎您需要一个数据帧,其中包含(1)EDOCX1中的所有原始数据(1)和(2)每组中的数据量计数。这些东西有不同的长度,所以如果它们需要进入同一个数据帧,您需要冗余地列出大小,即每个组中的每一行。
1 | df['size'] = df.groupby(['A','B']).transform(np.size) |
(旁白:如果您能显示简洁的样本输入和预期的结果,这很有帮助。)
你需要
注意事项:
这里有必要在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import pandas as pd df = pd.DataFrame({'A': ['x', 'x', 'x','y','y'] , 'B': ['a', 'c', 'c','b','b']}) print (df) A B 0 x a 1 x c 2 x c 3 y b 4 y b df['size'] = df.groupby(['A', 'B'])['A'].transform('size') print (df) A B size 0 x a 1 1 x c 2 2 x c 2 3 y b 2 4 y b 2 |
如果需要在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import pandas as pd df = pd.DataFrame({'A': ['x', 'x', 'x','y','y'] , 'B': ['a', 'c', 'c','b','b']}) print (df) A B 0 x a 1 x c 2 x c 3 y b 4 y b df = df.groupby(['A', 'B']).size().reset_index(name='Size') print (df) A B Size 0 x a 1 1 x c 2 2 y b 2 |
假设n是数据帧的名称,cst是要表示的项的编号。下面的代码给出下一列中的计数
1 2 3 4 | cstn=Counter(n.cst) cstlist = pd.DataFrame.from_dict(cstn, orient='index').reset_index() cstlist.columns=['name','cnt'] n['cnt']=n['cst'].map(cstlist.loc[:, ['name','cnt']].set_index('name').iloc[:,0].to_dict()) |
希望这能奏效