我有一个数据框。 Click here to get the pic of the dataframe:
换句话说:
MALE / M /男/男指示男性。
一名女性已被女性,女性,女性指示。
肯定回答由YES / yes / yes表示。
否定回答由no / NO / nope表示。
因此,对于上述数据框架,我想在Python中计算,总男性数量,总女性数量, 总肯定回复数量和总次回复数量。我该怎么办?
答案 0 :(得分:1)
您需要str[0]
每列选择第一个字母,转换为lower
,按True
比较并计算sum
的数量:
df = pd.DataFrame(data={'Gender':['Male', 'MALE', 'Female', 'F', 'M'],
'Response': ['yes', 'N', 'no', 'nope', 'NO']})
print (df)
Gender Response
0 Male yes
1 MALE N
2 Female no
3 F nope
4 M NO
count = len(df.index)
males = (df['Gender'].str[0].str.lower() == 'm').sum()
females = (df['Gender'].str[0].str.lower() == 'f').sum()
yes = (df['Response'].str[0].str.lower() == 'y').sum()
no = (df['Response'].str[0].str.lower() == 'n').sum()
print (count)
5
print (males)
3
print (females)
2
print (yes)
1
print (no)
4
value_counts
的另一个解决方案,然后concat
以及index
的最后重命名dict
值:
a = df['Gender'].str[0].str.lower().value_counts()
b = df['Response'].str[0].str.lower().value_counts()
s = pd.concat([a,b])
s.loc['count'] = len(df.index)
d = {'m':'male', 'f':'female', 'y':'yes', 'n':'no'}
s = s.rename(index=d)
print (s)
male 3
female 2
no 4
yes 1
count 5
dtype: int64
答案 1 :(得分:0)
首先,您可以获得每个值的计数:
df.Gender.count_values()
然后添加要组合在一起的值