4
我有三列A,B和C.我想根据C的值创建第四列D,它包含A或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
在上述例子中,柱采用d塔A的值,如果C的值是1,如果C的值是0列B的值有一种优雅的方式做它在熊猫?感谢您的帮助。
我有三列A,B和C.我想根据C的值创建第四列D,它包含A或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
在上述例子中,柱采用d塔A的值,如果C的值是1,如果C的值是0列B的值有一种优雅的方式做它在熊猫?感谢您的帮助。
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
响应的意见发表评论
你会如何修改熊猫的答案,而不是0,1在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
使用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
有趣的赌注非常不可读...... –
你会如何修改大熊猫回答如果不是0,1列C你有A,B? – user6566438
@ user6566438我已更新我的帖子 – piRSquared