我有一个框架,并试图将其分组的司,并得到它的计数的基础上,在这里我称之为“问题”列。它有一些空值,我想包括在内。它只有是/否响应。
我一直在试验groupby函数,它看起来并不是我想要的样子。我也想过根据“Question”的字符串响应创建单独的嵌套,并根据除法合并,但也没有成功。
这是我有的
df2 = df.groupby(['Division', 'Question'], dropna=False)['Division'].count().to_frame(name='Total')
我的结果是:
Division Question Total
name1 nan 1
name2 No 3
...
name20 Yes 1
name20 No 1
name20 nan 2
我试过使用这个,但它使用该列的总空值作为计数,我希望它基于'问题' == '是'或'问题' == '否'或'问题' == '南'
df2['Null_Counts'] = df.loc[:, 'Question'].isnull().sum()
Division Question Total Null_Counts
name1 nan 1 20
name2 No 3 20
...
name20 Yes 1 20
name20 No 1 20
name20 nan 2 20
我试图弄清楚如何使“问题”列作为单独的列,使它按部门和问题组。我想包括null值,所以它会这样:
Division Null_Counts Yes_Counts No_Counts Total
name1 1 nan nan 1
name2 3 nan nan 3
... ... .. ... ...
name20 2 1 1 4
我不在乎它是否读空计数为nan,但它可以是零。
3条答案
按热度按时间vh0rcniy1#
基本上,我发现用字符串替换
np.nan
更干净(工作得很快)。它还有一个好处,就是当总和为零时,df包含零来代替nan
。这样就行了
它返回:
从这里您可以自己编辑列标题.
hmmo2u0o2#
我建议尝试以基于批判性思维的简单方法做事,而不是试图找到完美的函数或最短的代码块。isnull、.fillna和np.nan都有自己的特点,但是对于您的应用程序,您可以使用简单的if-elif-else来避免直接评估nan值。一旦你开始工作,你可以担心效率。这种方法也使得用另一种语言来适应类似的任务变得容易得多。
vawmfj5a3#
使用another answer中提供的示例数据