根据存储在另一列中的值为列分配值

根据存储在另一列中的值为列分配值

问题描述:

我有一个数据框,我想根据存储在另一列中的值创建一个新列。根据存储在另一列中的值为列分配值

foo = pd.DataFrame(
    [['USA','x',1,2], 
    ['Canada','y',2,4], 
    ['Australia','x',3,6]], 
    columns = ('Country', 'C1','x', 'y') 
) 

例如,给出以下数据帧

Country  C1 x y 
0 USA   x 1 2 
1 Canada  y 2 4 
2 Australia x 3 6 

我想创建一个新的列说ž但列C1决定,其中z的值将被从列x或y列的到来。 换句话说,我想要做的事像

FOO [ 'Z'] = FOO [富[ 'C1']]

该柱C1可以具有28个不同的值之一。 这个问题与评论中提到的问题不同,因为我不想根据预先存在的值计算值,而是在其中一列(本例中为C1)中包含值的值的列的名称存储在新列中。

+0

的可能的复制[熊猫:创建在数据帧两个新列与来自预先存在的列计算的值](http://stackoverflow.com/questions/12356501/pandas-create-two-new-在一个数据框中使用值计算从一个前) – klib

+0

您说:“列C1决定z的值将来自列x或列y。” C1会如何决定?基于什么条件? –

+0

C1将具有其值应被用作该特定行的z的值的列的名称 – MARK

foo['z']=foo.apply(lambda x: x[x['C1']], axis=1)