如何向数据框添加多列

时间:2019-02-12 18:52:23

标签: python pandas

我有一个返回列表列表的函数,我想根据返回值在我的数据框中添加多列。这是我的函数的返回值的样子

[[1,2,3],[3,4,3],[1,6,7],[4,7,6]]

我想在数据框中添加三列。我有以下代码

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

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

3 个答案:

答案 0 :(得分:2)

您可以直接传递列表:

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'])

答案 1 :(得分:0)

这是一种实现方法:

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 

答案 2 :(得分:0)

这是一个带有伪函数的示例,该函数返回一个列表列表。由于该函数返回一个列表,因此需要在将其分配给现有数据框之前将其传递给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