我有一个返回列表列表的函数,我想根据返回值在我的数据框中添加多列。这是我的函数的返回值的样子
[[1,2,3],[3,4,3],[1,6,7],[4,7,6]]
我想在数据框中添加三列。我有以下代码
col_names = ['A','B','C']
df[col_names] = func()
但是它给了我一个错误。如何添加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