python - Pandas 将性别列拆分为两列
问题描述
我有下表: https ://ibb.co/DMGCgD2
我想在每个邮政编码中将(属性类型)拆分为两列 count_Single_Family 和 count_Multi_Family:
我使用了这段代码,但我不知道下一步该怎么做:
b=Combineddf[Combineddf['Property Type']=='Multi-Family'].count()
a=Combineddf[Combineddf['Property Type']=='Single Family'].count()
我可以用 sql 做到这一点,但我一直试图让它与 pandas 一起工作,但没有运气。感谢您的帮助。编辑* 输入:
import pandas as pd
input= pd.DataFrame({'Zip Code': [90001, 90001, 90001,90002,90002,90002],
'Total Males': [28468, 28468, 28468,43533,43533,43533],
'Total Female': [32135, 32135, 32135,54354,54354,54354],
'Property Type': ['Multi-Family', 'Multi-Family', 'Single Family','Single Family','Single Family','Multi-Family']
})
input
期望的输出:
out = pd.DataFrame({'Zip Code': [90001, 90001, 90001,90002,90002,90002],
'Total Males': [28468, 28468, 28468,43533,43533,43533],
'Total Female': [32135, 32135, 32135,54354,54354,54354],
'Multi-Family': [2, 2, 2,1,1,1],
'Single Family': [1, 1, 1,2,2,2],
})
out
解决方案
pd.crosstab
+merge
Pandas 有一种基于索引和值进行交叉制表的方法。然后,您只需将这些结果与原始数据框合并。
df_cross = pd.crosstab(df['Zip Code'], df['Property Type'])
res = df.merge(df_cross, left_on='Zip Code', right_index=True)
print(res)
Zip Code Total Males Total Female Property Type Multi-Family \
0 90001 28468 32135 Multi-Family 2
1 90001 28468 32135 Multi-Family 2
2 90001 28468 32135 Single Family 2
3 90002 43533 54354 Single Family 1
4 90002 43533 54354 Single Family 1
5 90002 43533 54354 Multi-Family 1
Single Family
0 1
1 1
2 1
3 2
4 2
5 2
推荐阅读
- excel - 动态复制和粘贴值
- android - 是否有使用 android-ConstraintLayout 的最低 android 版本?
- python - 从等式预测主要答案的概率的程序无法正常工作
- python - SSH使用python登录服务器,并到达远程服务器上的命令提示符
- c# - 简单的 HTTP GET 导致“现有连接被远程主机强行关闭”但仅在带有 ClickOnce 的 WPF 中?
- kubernetes - GKE Kubernetes Ingress 没有使用带注释的保留静态 IP,即使它已经创建
- powershell - 八达通中的Powershell脚本失败
- permissions - gcloud 无法打开当前工作目录的路径权限被拒绝
- java - 链中发生错误时更新原始 Mono
- linux - 这个 grep 命令有什么问题?