python - 对给定行,pandas 跨列的分类特征标签求和
问题描述
对df中每个实例的分类变量的(相同)标签计数求和的pythonic方法是什么?例如:
qualityOfLife_df = pd.DataFrame([['A', 'Up', 'Up', 'Same'],
['B', 'Up', 'Down', 'Up'],
['C', 'Down', 'Down', 'Down']],
columns = ['City', 'Crime', 'Pollution', 'Jobs'])
在添加标签计数列后应该给出:
City Crime Pollution Jobs nUp nDown nSame
0 A Up Up Same 2 0 1
1 B Up Down Up 2 1 0
2 C Down Down Down 0 3 0
谢谢
解决方案
您可以pd.Series.value_counts
在每一行上应用该函数,然后在用nan
零替换 s 后将计数连接到dataframe
.
>>> counts = qualityOfLife_df.apply(pd.Series.value_counts, axis=1)[['Up', 'Down', 'Same']].fillna(0)
>>> pd.concat((qualityOfLife_df, counts), axis=1)
City Crime Pollution Jobs Up Down Same
0 A Up Up Same 2.0 0.0 1.0
1 B Up Down Up 2.0 1.0 0.0
2 C Down Down Down 0.0 3.0 0.0
同样如评论中所述,您可以使用astype(int)
将浮点数转换为整数。我建议,为了内存优化,如果您正在处理更大的数据集,请使用较小的整数类型,例如np.int16
或np.int8
基于 count 可能持有的最大数量。
>>> pd.concat((qualityOfLife_df, counts.astype(int)), axis=1)
City Crime Pollution Jobs Up Down Same
0 A Up Up Same 2 0 1
1 B Up Down Up 2 1 0
2 C Down Down Down 0 3 0
推荐阅读
- java - Java中的String Rotation程序,用于查找向后旋转的空格数
- c# - 实体框架为一对多 rel 创建查询
- linux - ELF 文件中的文本和数据段与 .text 和 .data 段有什么区别?
- python - 如何确定对象的属性及其正确的函数返回?
- php - Google Adwords 通过 Measurement Protocol 保存服务器端转化跟踪
- uml - UML 组件图关系
- c# - 如何将自定义数据类型从 C++ DLL 方法返回到 C# 代码?
- html - offsetTop 将其子元素的边距相加
- python - 如何使用 Python 和 Pyomo 和 Ipopt 获得 Hessian 和 Lagragian 的梯度来计算 KKT 矩阵
- django - Django基于多个crieria填充字段值类型表达式