如何计算Python数据帧列中不同版本字符串的出现次数?

时间:2017-06-09 11:54:49

标签: python pandas dataframe count

我有一个数据框。 Click here to get the pic of the dataframe:

换句话说:

MALE / M /男/男指示男性。

一名女性已被女性,女性,女性指示。

肯定回答由YES / yes / yes表示。

否定回答由no / NO / nope表示。

因此,对于上述数据框架,我想在Python中计算男性数量,女性数量, 肯定回复数量和次回复数量。我该怎么办?

2 个答案:

答案 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()

然后添加要组合在一起的值