python - 如何在熊猫数据帧的每一行中获取特定值的频率
问题描述
我有这个熊猫数据框:
df = pd.DataFrame(
data=[
['yes', 'no', np.nan],
['no', 'yes', 'no'],
[np.nan, 'yes', 'yes'],
['no', 'no', 'no']
],
index=pd.Index(['xyz_1', 'xyz_2', 'xyz_3', 'xyz_4'], name='ID'),
columns=['class1', 'class2', 'class3']
)
print(df)
Out:
ID class1 class2 class3
xyz_1 yes no NaN
xyz_2 no yes no
xyz_3 NaN yes yes
xyz_4 no no no
我想获得每行类列中“是”和“否”的频率,并有一个新的数据框,如下所示:
ID yes no nan
xyz_1 1 1 1
xyz_2 1 2 0
xyz_3 2 0 1
xyz_4 0 3 0
我看了这个问题,但我不想要总和,而是要计数。
有任何想法吗?
解决方案
使用pd.get_dummies
,但设置dummy_na
为True
:
pd.get_dummies(
df, prefix='', prefix_sep='', dummy_na=True
).groupby(level=0, axis=1).sum() # Sum the *counts* for each column.
nan no yes
ID
xyz_1 1 1 1
xyz_2 0 2 1
xyz_3 1 0 2
xyz_4 0 3 0
推荐阅读
- angular - 使用 Angular 和 Spring Boot 上传图像的问题
- assembly - 如何比较输入字符串或字符 MIPS 程序集
- node.js - 我不能在 circleci 部署中使用私有 repo 作为 npm 依赖项
- java - 行集的 Java 多线程处理
- python - 对(删除的)重复行 Pandas DataFrame 的值求和
- sql - 如何在 SQL Server 中连接两个结果别名列
- point - 如何对地标点附近的点进行采样
- flutter - 在颤动中覆盖小部件更改子小部件
- google-apps-script - 为什么我的排序功能不起作用?(谷歌表)
- javascript - 在“{ [key: string]: AbstractControl; 类型上找不到带有“string”类型参数的索引签名 }