Python 如何将多列添加到数据帧

Python 如何将多列添加到数据帧,python,pandas,Python,Pandas,我有一个返回列表列表的函数,我想根据返回值向我的数据帧添加多个列。下面是我函数的返回值的样子 [[1,2,3],[3,4,3],[1,6,7],[4,7,6]] 我想在我的数据框中添加三列。我有以下代码 col_names = ['A','B','C'] df[col_names] = func() 但这给了我一个错误。如何添加3个新列?您可以直接传递列表: pd.DataFrame([[1,2,3],[3,4,3],[1,6,7],[4,7,6]],columns=['A','B','

我有一个返回列表列表的函数,我想根据返回值向我的数据帧添加多个列。下面是我函数的返回值的样子

[[1,2,3],[3,4,3],[1,6,7],[4,7,6]]
我想在我的数据框中添加三列。我有以下代码

 col_names = ['A','B','C']
 df[col_names] = func()

但这给了我一个错误。如何添加3个新列?

您可以直接传递列表:

pd.DataFrame([[1,2,3],[3,4,3],[1,6,7],[4,7,6]],columns=['A','B','C'])

   A  B  C
0  1  2  3
1  3  4  3
2  1  6  7
3  4  7  6
或者,如果您已将列表定义为
l=[[1,2,3],[3,4,3],[1,6,7],[4,7,6]]
,请将其传递到数据帧:

df = pd.Dataframe(l,columns=['A','B','C'])

以下是一种方法:

df = pd.DataFrame({'foo': ['bar', 'buzz', 'fizz']})

def buzz():
    return [[1,2,3],[3,4,3],[1,6,7],[4,7,6]]


pd.concat([df, pd.DataFrame.from_records(buzz(), columns=col_names)], axis=1)

    foo  A  B  C
0   bar  1  2  3
1  buzz  3  4  3
2  fizz  1  6  7
3   NaN  4  7  6 

下面是一个示例,其中包含一个返回列表列表的伪函数。由于该函数返回一个列表,因此在将其分配给现有DataFrame之前,需要将其传递给pd.DataFrame构造函数

def fn(l1,l2,l3):
    return [l1,l2,l3]
df = pd.DataFrame({'col': ['a', 'b', 'c']})
col_names = ['A','B','C']
df[col_names] = pd.DataFrame(fn([1,2,3], [3,4,3], [4,7,6]))
你得到

    col A   B   C
0   a   1   2   3
1   b   3   4   3
2   c   4   7   6

错误是什么?输出列应该是什么样子?哪些列表元素进入哪些列?在我的例子中,每个子列表将是一行df有865条记录,新的数据帧也有相同数量的记录,因此我希望生成的数据帧也有865条记录。但它有大约1600条记录!返回数据的函数是否返回865个列表,每个列表包含3项?这与我想要的不同。我想在我现有的数据框架中添加一组新列。你能展示一下你的功能、一个示例df以及你想要实现的功能吗?@H.Z.只需这样做,然后
concat
将其添加到现有的数据框架中,或者
merge
如果你出于某种原因需要对关键列执行此操作,当我这样做时,所有新添加的列(a、B、C)只会有null,你的函数是什么样子的?我创建了一个返回列表列表的伪函数。您需要用函数替换fn(…)