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

如何计算Python数据帧列中字符串的不同版本的出现次数?,python,pandas,dataframe,count,Python,Pandas,Dataframe,Count,我有一个数据帧 换言之: 一个男性已由男性/M/男性/男性表示 一个女性已经用女性,F,Fem表示 肯定回答表示为是/是/是 否定回答由否/否/否表示 因此,对于上面的数据框,我想在Python中计算男性的总数,total女性的数量,total积极响应的数量和total消极响应的数量。如何操作?首先,您可以获得每个值的计数: df.Gender.count_values() 然后添加要分组的值您需要的str[0]为每列选择第一个字母,转换为Trues,并通过sum对其进行比较和计数: df =

我有一个数据帧

换言之:

一个男性已由男性/M/男性/男性表示

一个女性已经用女性,F,Fem表示

肯定回答表示为是/是/是

否定回答由否/否/否表示


因此,对于上面的数据框,我想在Python中计算男性的总数,total女性的数量,total积极响应的数量和total消极响应的数量。如何操作?

首先,您可以获得每个值的计数:

df.Gender.count_values()

然后添加要分组的值

您需要的
str[0]
为每列选择第一个字母,转换为
True
s,并通过
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
另一个解决方案是使用
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

您可以使用df.to_clipboard()获取数据帧的示例,它将帮助人们更好地掌握数据,而不是图像。