![](/img/trans.png)
[英]Remove when 2 columns are duplicated, but keep based on value of a third column (pandas)
[英]Keep values of between two columns based on third column in pandas
我有三列,A,B和C.我想创建第四列D,其中包含A或B的值,基于C的值。例如:
A B C D
0 1 2 1 1
1 2 3 0 3
2 3 4 0 4
3 4 5 1 4
在上面的例子中,如果C的值为1,则列D取A列的值,如果C的值为0,则取列B的值。在Pandas中有优雅的方法吗? 谢谢您的帮助。
使用numpy.where
:
In [20]: df
Out[20]:
A B C
0 1 2 1
1 2 3 0
2 3 4 0
3 4 5 1
In [21]: df['D'] = np.where(df.C, df.A, df.B)
In [22]: df
Out[22]:
A B C D
0 1 2 1 1
1 2 3 0 3
2 3 4 0 4
3 4 5 1 4
pandas
考虑到OP的要求
在熊猫中有优雅的方式吗?
我对优雅的看法
和惯用的纯pandas
assign
+ pd.Series.where
df.assign(D=df.A.where(df.C, df.B))
A B C D
0 1 2 1 1
1 2 3 0 3
2 3 4 0 4
3 4 5 1 4
回应评论
你如何修改pandas的答案,而不是0,在C列中你有A,B?
df.assign(D=df.lookup(df.index, df.C))
A B C D
0 1 2 A 1
1 2 3 B 3
2 3 4 B 4
3 4 5 A 4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.