python - 如何根据其他行值添加熊猫数据框列
问题描述
我正在尝试添加一个新列并根据其他行值设置其值。假设我们有以下数据框:
df = pd.DataFrame({
'B':[1,2,3,4,5,6],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
})
有了这个对应的输出
B C D
1 7 1
2 8 3
3 9 5
4 4 7
5 2 1
6 3 0
我想添加一个新列'E',它具有以下值:E = df.C value where B = B + 2。
例如,E的第一个值应该是3(我们选择B = 0的行+2 = 2,然后从该行中选择 C 值)。我尝试了以下
f['E'] = np.where(f.B == (f['B']+2))['C']
但它不工作
解决方案
您可以设置B
和索引并使用它来映射修改后的数据:
df['E'] = df['B'].add(2).map(df.set_index('B')['C'])
输出:
B C D E
0 0 1 7 3.0
1 1 2 8 4.0
2 2 3 9 5.0
3 3 4 4 6.0
4 4 5 2 NaN
5 5 6 3 NaN
推荐阅读
- angular - Angular 材质 mat-menu 多次复制内部组件
- javascript - 如何在php中回显ajax变量?
- node.js - 带有 vhost 和 greenlock-express 的 NodeJS 子域
- javascript - 进行多个快速 API 调用而不发送垃圾邮件的最有效方法?
- scala - Spark 结构化流中的 LocalTableScan 有什么用?
- python - 无法使用终端将本地 Python 文件复制到 HIVE
- swift - 让编辑按钮到我需要的地方
- javascript - 合并手风琴菜单和jQuery轮播
- angular - 在角度 2 中显示组件时如何绕过路由器插座?
- s4sdk - 无法在具有 oAuth2SAMLBearerAssertion 身份验证的云代工环境中使用 S4Hana SDK 执行 odata 调用