首页 > 解决方案 > 在 Pandas 中将列表添加到数据框的两列?

问题描述

我有以下代码。

import pandas as pd 


def generate_list(row): 
    return [row['A']*2, row['B']*3] 

def main(): 
    data = { 
            'A':[0, 2, 3],  
            'B':[4, 15, 6]} 
      
    df = pd.DataFrame(data) 
   
    # applying function to each row in 
    df['C'], df['D'] = df.apply(lambda row: generate_list(row), axis=1) 
       
if __name__ == '__main__': 
    main() 

该代码只是将一个函数应用于我的 df 的每一行,并将结果作为列表返回。我正在尝试将返回列表的每个元素添加到两个新列中。但是,我收到以下错误:

df['C'], df['D'] = df.apply(lambda row: generate_list(row), axis=1) 
ValueError: too many values to unpack (expected 2)

标签: pythonpandasdataframe

解决方案


代替:

    df['C'], df['D'] = df.apply(lambda row: generate_list(row), axis=1) 

和:

    df[['C','D']] = pd.DataFrame(df.apply(lambda row: generate_list(row), axis=1).tolist(), index= df.index)
    return df

给你:

A   B   C   D
0   0   4   0   12
1   2   15  4   45
2   3   6   6   18

推荐阅读