gpt4 book ai didi

python - 每个变量的堆栈和返回值计数?

转载 作者:行者123 更新时间:2023-12-03 12:47:25 28 4
gpt4 key购买 nike

我有一个数据框,记录了 19717 人通过多项选择题选择编程语言的 react 。第一列当然是受访者的性别,其余的是他们选择的选项。数据框如下所示,每个响应都记录为与列相同的名称。如果没有选择响应,则结果为 NaN .

ID     Gender              Python    Bash    R    JavaScript    C++
0 Male Python nan nan JavaScript nan
1 Female nan nan R JavaScript C++
2 Prefer not to say Python Bash nan nan nan
3 Male nan nan nan nan nan
我想要的是一个基于 Gender 返回计数的表.因此,如果 5000 名男性用 Python 编码,3000 名女性用 JS 编码,那么我应该得到这个:
Gender              Python    Bash    R    JavaScript    C++
Male 5000 1000 800 1500 1000
Female 4000 500 1500 3000 800
Prefer Not To Say 2000 ... ... ... 860
我已经尝试了一些选项:
df.iloc[:, [*range(0, 13)]].stack().value_counts()

Male 16138
Python 12841
SQL 6532
R 4588
Female 3212
Java 2267
C++ 2256
Javascript 2174
Bash 2037
C 1672
MATLAB 1516
Other 1148
TypeScript 389
Prefer not to say 318
None 83
Prefer to self-describe 49
dtype: int64
这不是如上所述的要求。这可以在 Pandas 中完成吗?

最佳答案

您可以melt并使用 crosstab

df1 = pd.melt(df,id_vars=['ID','Gender'],var_name='Language',value_name='Choice')
df1['Choice'] = np.where(df1['Choice'] == df1['Language'],1,0)
final= pd.crosstab(df1['Gender'],df1['Language'],values=df1['Choice'],aggfunc='sum')

print(final)
Language Bash C++ JavaScript Python R
Gender
Female 0 1 1 0 1
Male 0 0 1 1 0
Prefer not to say 1 0 0 1 0

关于python - 每个变量的堆栈和返回值计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59033379/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com