Python 使用列表理解在DataFrame中创建新列

Python 使用列表理解在DataFrame中创建新列,python,pandas,dataframe,list-comprehension,Python,Pandas,Dataframe,List Comprehension,因此,我有一个pandasDataFrame,它有几个列,其中包含我想使用定义的函数创建新列的值。我一直计划使用Python的列表理解来实现这一点,如中所述。以下是我一直在尝试的: df['NewCol1'], df['NewCol2'] = [myFunction(x=row[0], y=row[1]) for row in zip(df['OldCol1'], df['OldCol2'])] 在将值分配给新列之前,它一直正确运行,但在这一点上它失败了,我认为这是因为它没有迭代地分配值,而是

因此,我有一个
pandas
DataFrame,它有几个列,其中包含我想使用定义的函数创建新列的值。我一直计划使用Python的列表理解来实现这一点,如中所述。以下是我一直在尝试的:

df['NewCol1'], df['NewCol2'] = [myFunction(x=row[0], y=row[1]) for row in zip(df['OldCol1'], df['OldCol2'])]
在将值分配给新列之前,它一直正确运行,但在这一点上它失败了,我认为这是因为它没有迭代地分配值,而是尝试为每个列分配一个常量值。我觉得我已经接近正确地完成这项任务了,但我还不能完全理解这项任务

编辑:

数据都是字符串,函数根据这些字符串从另一个源获取一些不同的信息,如下所示:

def myFunction(x, y):
    # read file based on value of x
    # search file for values a and b based on value of y
    return(a, b)
我知道这有点含糊不清,但是helper函数解释起来相当复杂

收到的错误是:

ValueError: too many values to unpack (expected 4)
您可以使用
zip()


您是否可以发布示例数据和预期输出?是否也可以发布您收到的错误?您是否可以共享
myFunction
的代码?刚刚编辑了有关函数和收到的错误的信息。此操作已成功,谢谢!我可以问一下对
zip()
的外部调用后的星号是什么意思吗?这会有帮助的
df['NewCol1'], df['NewCol2'] = zip(*[myFunction(x=row[0], y=row[1]) for row in zip(df['OldCol1'], df['OldCol2'])])