python - 在某些行中,从一列获取值并将其传播到另一列
问题描述
有以下数据框:
df = pd.DataFrame(np.random.randint(0,1000,size=(9,4)), columns=list('ABCD'))
df.loc[5:7,'A']=123
在“A”列中有 123 个的每一行中,我希望“C”和“D”列值等于“B”。
理想的输出:
我试过:
df.loc[df['A']==123].assign(**(df.C=df.B,df.D=df.B ))
哪个返回 SyntaxError: invalid syntax
解决方案
您可以将 column 设置B
为中的列列表DataFrame.loc
:
np.random.seed(2020)
df = pd.DataFrame(np.random.randint(0,1000,size=(9,4)), columns=list('ABCD'))
df.loc[5:7,'A']=123
df.loc[df['A']==123, ['C','D']] = df.B
print (df)
A B C D
0 864 392 323 630
1 707 91 637 643
2 583 952 157 560
3 160 920 970 777
4 691 139 55 626
5 123 195 195 195
6 123 156 156 156
7 123 980 980 980
8 79 325 458 841
您的解决方案应该使用不同的语法进行更改 - 删除**
并删除重新分配列df.
:
df.loc[df['A']==123] = df.assign(C=df.B,D=df.B)
推荐阅读
- postgresql - 用于从外部 AKS 访问 postgres 的 Port-foward 命令在 kubectl 中由于 & 符号而无法工作
- postgresql - 创建一个序列实际上是创建一个大序列
- mysql - 清理 Rails 迁移和持久化生产数据
- local - 使用 LINQPad 5 + TX (LINQ to Traces) 使用服务结构本地集群 ETW 事件的指南?
- java - 如何手动取消/处置 RXJava2 Flowable?
- wordpress - Wordpress 的索引页面不是 SSL 安全的
- node.js - npm 脚本使用哈希开始生产构建
- android - 你如何在android中获得一个switch语句来识别一个复选框?
- java - 如何对依赖于其他 Util 类方法的 Util 类进行单元测试?
- c# - 如何向前端显示数据?