在数据框中创建一个新的条件列,并从多个列中获取值

2024-09-29 21:22:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要帮助创建一个条件列,该列使用其他多个列中的值来创建

    Column1|Column2|Column4|Column4
       1   |   2   |   5   |   A
       2   |   3   |   4   |   B
       3   |   4   |   3   |   C
       4   |   5   |   2   |   B
       5   |   1   |   1   |   C

我想要的是创建一个新列,如果column4等于,那么新列将等于column1中的值,因此最终的数据帧如下所示

    Column1|Column2|Column4|Column4|column5
       1   |   2   |   5   |   A   |   1
       2   |   3   |   4   |   B   |   3
       3   |   4   |   3   |   C   |   3
       4   |   5   |   2   |   B   |   5
       5   |   1   |   1   |   C   |   1

这是我到目前为止尝试过的,但一直在获取响应数据。column1(x)对象不可调用

def column5(x):
    if x['column4'] == 'A'
        return data.column1(x)
    elif x['column4'] == 'B'
        return data.column2(x)
    elif x['column4'] == 'C'
        return data.column3(x)

Tags: 数据对象datareturnifdef条件elif
1条回答
网友
1楼 · 发布于 2024-09-29 21:22:56

出现错误是因为data.column1是一个pandas.Series,不能像使用data.column1(x)的函数那样调用它

此外,根据col4的值,每行所需的值也不同,因此需要使用循环,或者更好:使用pandas's apply()函数

试试这个:

# map value to column
val_to_col = {
    'A': 'Column1', 
    'B': 'Column2', 
    'C': 'Column3'
}

# get data from col, based on row[col4]
df['column5'] = df.apply(lambda row: row[val_to_col.get(row['Column4'])], axis=1)

相关问题 更多 >

    热门问题