我有一个数据集,可以跟踪对格式如下的调查问卷的分类(是/否)回答:

Client_Id Question_1 Question_2 Question_3 Question_4
1000 No No Yes Yes
1001 Yes Yes Yes No
1002 No Yes Yes Yes

我试图计算每个问题的Y或N答案的数量,并将它们转换为如下格式的数据集:

Response Question_1 Question_2 Question_3 Question_4
Yes 1 2 3 2
No 2 1 0 1

我已经用这个for循环成功地计算了响应:

对于test_df.Columns中的c: D=test_df[c].value_count().reindex([‘是’,‘否’],Fill_Value=0) 打印(%d)

现在,我只想将信息放入一个新的数据集中.

推荐答案

一个使用sum的选项(仅当您有二进制值(如Yes/No)时):

m = df.filter(like='Question').eq('Yes').sum()

out = pd.DataFrame.from_dict({'Yes': m, 'No': len(df)-m}, orient='index')

或者使用meltvalue_counts的更一般的方法:

out = (df.filter(like='Question')
         .melt().value_counts()
         .unstack('variable', fill_value=0)
         .rename_axis(index=None, columns=None)
      )

crosstab:

s = df.filter(like='Question').stack()

out = (pd.crosstab(s, s.index.get_level_values(1))
         .rename_axis(index=None, columns=None)
       )

输出:

     Question_1   Question_2   Question_3   Question_4
Yes            1            2            3           2
No             2            1            0           1

Python相关问答推荐

如何在msgraph.GraphServiceClient上进行身份验证?

max_of_three使用First_select、second_select、

ModuleNotFound错误:没有名为Crypto Windows 11、Python 3.11.6的模块

如何将多进程池声明为变量并将其导入到另一个Python文件

从列表中获取n个元素,其中list [i][0]== value''

Python pint将1/华氏度转换为1/摄氏度°°

mdates定位器在图表中显示不存在的时间间隔

获取PANDA GROUP BY转换中的组的名称

如何将泛型类类型与函数返回类型结合使用?

在我融化极点数据帧之后,我如何在不添加索引的情况下将其旋转回其原始形式?

504未连接IB API TWS错误—即使API连接显示已接受''

如何使用pytest在traceback中找到特定的异常

为什么dict. items()可以快速查找?

如何获得满足掩码条件的第一行的索引?

用由数据帧的相应元素形成的列表的函数来替换列的行中的值

如何获取给定列中包含特定值的行号?

如何在Python中实现高效地支持字典和堆操作的缓存?

Python:在cmd中添加参数时的语法

关于数字S种子序列内部工作原理的困惑

Pandas ,快速从词典栏中提取信息到新栏