使用.loc用另一列的值更新pandas列

时间:2019-04-03 15:03:40

标签: python python-3.x pandas dataframe loc

如果ColX的值= 0,则需要在下面有条件地更新ColY。与其他示例的区别在于,我需要用ColX的值代替字符串代替ColY,

当我使用以下代码时,可以使用.loc替换为字符串:

df1.loc[df1.ColX != 0, 'ColY'] = 'Example'

如何用ColX的值替换相关的ColY值?我尝试了以下类似的尝试,但无济于事

df1.loc[df1.ColX != 0, 'ColY'] = df1.ColX

我的原始数据帧df1是:

ID  ColX   ColY
A   2024   0
B   0      2023
C   2019   0
D   2023   2024

我想要的输出是:

ID  ColX   ColY
A   2024   2024
B   0      2023
C   2019   2019
D   2023   2023

2 个答案:

答案 0 :(得分:2)

为方便起见,我认为这是另一种 cleaner 方法,使用np.where.ne

$("#add-file").click(function () {
    var nextId = $(".file").length;

    var rowHtml = '<div class="file">' +
        '<label class="control-label">Upload file</label>' +
        '<input id="Files_' + nextId + '_" name="Files[' + nextId + ']" type="file" />' +
        '</div>';

    $("#file-container").append(rowHtml);
});

答案 1 :(得分:1)

echo "Which pc are you using?? <br>"; $pc = file('pc.txt'); $name = ' '; $name.="<option>Choose please</option>"; foreach ($pc as $type) { $type = explode(',',$name); $name .= '<option value="'.$type[0] . '">' . $type[0] . '</option>'; } $select = '<select name="pc">'.$name.'</select>'; echo $select; 的问题在于,您试图将df1.loc[df1.ColX != 0, 'ColY'] = df1.ColX的子集(即df1.ColY)替换为具有更多值的整个df1.ColX != 0

要有条件地复制正确的值,还必须对df1.ColX应用相同的过滤器:

df1.ColX