对于特定的数据框,我需要获得女性的数量,因此我使用了以下代码。
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
该功能应该进行哪些更改?
答案 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