在pandas中使用len函数

时间:2017-07-26 05:26:40

标签: python pandas

对于特定的数据框,我需要获得女性的数量,因此我使用了以下代码。

 f = df.loc[df['Sex']== 'female' ,'Sex']
 print(len(f))
    >>>314

但我需要获得其他几个项目的长度,因此我尝试创建一个函数来计算长度并将提取的值放入其中。代码如下:

def count_num(i):
   k = len(i)
   return k
mf = m.apply(count_num)
print(mf)
>>> But I am getting an output as:
1      6
2      6
3      6
8      6
9      6
10     6
11     6
Name: Sex, Length: 314, dtype: int64
and so on...till the end

该功能应该进行哪些更改?

2 个答案:

答案 0 :(得分:4)

我认为你需要value_counts

df['Sex'].value_counts()

似乎你需要:

cols = ['col1','col2','Sex']
df1 = df[cols].stack().value_counts()

样品:

df = pd.DataFrame({'col1':list('accddd'),
                   'Sex':['Female'] * 2 + ['Male'] * 4,
                   'C':[7,8,9,4,2,3],
                   'D':[1,3,5,7,1,0],
                   'E':[5,3,6,9,2,4],
                   'col2':list('gggtrr')})

print (df)
   C  D  E     Sex col1 col2
0  7  1  5  Female    a    g
1  8  3  3  Female    c    g
2  9  5  6    Male    c    g
3  4  7  9    Male    d    t
4  2  1  2    Male    d    r
5  3  0  4    Male    d    r

cols = ['col1','col2','Sex']
df1 = df[cols].stack().value_counts()
print (df1)
Male      4
g         3
d         3
c         2
r         2
Female    2
a         1
t         1
dtype: int64

答案 1 :(得分:2)

您还可以按尺寸使用分组。如果您有数据框

2

输出:with click.progressbar(range(1000000)) as bar: for i in bar: pass