pandas - 根据其他列值估算值
问题描述
有以下格式的数据框(df):
Name, Col-1, Col-2, Col-3, Col-4
abc, 0, 1, 0, 0
cba, 1, 0, 0, 0
bns 1, 0, 0, 0
abd 0 0, 0, 1
现在我正在尝试向此数据框添加新列,如下所示:
Name, Col-1, Col-2, Col-3, Col-4, Type
abc, 0, 1, 0, 0, Col-2
cba, 1, 0, 0, 0, Col-1
bns 1, 0, 0, 0, Col-1
abd 0 0, 0, 1, Col-4
请建议如何完成它,我在下面尝试但抛出错误。
df['Type'] = [lambda x: x if x == 1 for x in df.columns]
解决方案
您可以使用idxmax:
In [11]: df
Out[11]:
Name Col-1 Col-2 Col-3 Col-4
0 abc 0 1 0 0
1 cba 1 0 0 0
2 bns 1 0 0 0
3 abd 0 0 0 1
In [12]: df.iloc[:, 1:]
Out[12]:
Col-1 Col-2 Col-3 Col-4
0 0 1 0 0
1 1 0 0 0
2 1 0 0 0
3 0 0 0 1
In [13]: df.iloc[:, 1:].idxmax(axis=1)
Out[13]:
0 Col-2
1 Col-1
2 Col-1
3 Col-4
dtype: object
In [14]: df["Type"] = df.iloc[:, 1:].idxmax(axis=1)
In [15]: df
Out[15]:
Name Col-1 Col-2 Col-3 Col-4 Type
0 abc 0 1 0 0 Col-2
1 cba 1 0 0 0 Col-1
2 bns 1 0 0 0 Col-1
3 abd 0 0 0 1 Col-4
推荐阅读
- java - 如何使用带有 JoinColumn 的 JPA 实体的全参数构造函数?
- typescript - 如何在类型脚本中取消泛型类型
- javascript - 如何创建可以根据用户输入更改的 JSON 访问器?
- math - 关于排序回归
- java - 如何在java中验证输入变量的类型?
- css - CSS 列表格式菜单 - 当图像在列表中时,菜单项向下移动
- javascript - React JS CSS 无法代理多个树 url 上的错误
- django - AWS 上 Django 和 Django REST API 的 Django 3.1 Oath 身份验证
- azure-devops - Azure-Devops Pipeline - 等待 E2E 测试管道通过,然后再部署到下一个环境
- api - 我需要 API 扫描日期月份年份从 UID 注册 Facebook 帐户