在' df.size()'之后操作新列。功能?

时间:2015-12-04 13:05:09

标签: python python-2.7 numpy pandas

我在pandas模块中执行了df.size()函数,如下所示(df = Dataframe)后,我在标有No.的列旁边获得了一个新列。但是,我不确定如何操纵这个新专栏。这是因为我不知道此专栏的标签/密钥。

例如,我想将生成的值(在新列中)表示为新列中所有这些值之和的一部分。我怎么能这样做?

JuncNo = pd.read_csv(filename)
JuncNo_group = JuncNo.groupby('No.')
JuncSize = JuncNo_group.size()
JuncSize.head(n=6)
No.
1   122
2  2136 
3   561
4    91
5    10
6     3
dtype: int64

1 个答案:

答案 0 :(得分:1)

您必须设置新系列的名称并重置索引:

JuncSize = JuncSize.groupby('No').size()
JuncSize.name = 'size'
JuncSize = JuncSize.reset_index()
print JuncSize

但是,如果您需要添加与原始数据帧相同的行数的新列,则可以使用:

JuncSize['size'] = JuncSize.groupby('No').transform(np.size)

示例:

print JuncSize
  No Code
0  D   B2
1  B   B2
2  B   B3
3  B   B3
4  G   B3
5  B   B3

JuncSize['size'] = JuncSize.groupby('No').transform(np.size)
print JuncSize
  No Code size
0  D   B2    1
1  B   B2    4
2  B   B3    4
3  B   B3    4
4  G   B3    1
5  B   B3    4
JuncSize = JuncSize.groupby('No').size()
print JuncSize
No
B    4
D    1
G    1
JuncSize.name = 'size'
print JuncSize
No
B    4
D    1
G    1
Name: size, dtype: int64

JuncSize = JuncSize.reset_index()
print JuncSize
  No  size
0  B     4
1  D     1
2  G     1