将相同系列附加到数据框列

时间:2019-08-14 20:15:41

标签: python pandas concatenation

我有以下数据框:

data=pd.DataFrame(data=[[8,4,2,6,0],[3,4,5,6,7]],columns=["a","b","c","d","e"])

输出如下:

    a b c d e
0   8 4 2 6 0
1   3 4 5 6 7

我还有以下系列:

a=pd.Series([3,4])

我想将系列(a)附加到数据中的每一列。我用concat尝试了几件事,但似乎永远做不到。

预期结果是:

    a b c d e
0   8 4 2 6 0
1   3 4 5 6 7
2   3 3 3 3 3
3   4 4 4 4 4 

预先感谢

4 个答案:

答案 0 :(得分:5)

您可以这样做:

out=data.append(pd.concat([a]*data.shape[1],axis=1,keys=data.columns),ignore_index=True)

   a  b  c  d  e
0  8  4  2  6  0
1  3  4  5  6  7
2  3  3  3  3  3
3  4  4  4  4  4

答案 1 :(得分:3)

这是for循环中的方法

for x ,y in a.iteritems(): 
    data.loc[data.index[-1]+x+1]=y

data
Out[106]: 
   a  b  c  d  e
0  8  4  2  6  0
1  3  4  5  6  7
2  3  3  3  3  3
4  4  4  4  4  4

答案 2 :(得分:2)

使用broadcast_to

df.append(pd.DataFrame(np.broadcast_to(a.to_frame(), (len(a), df.shape[1])), columns=df.columns), ignore_index=True)

   a  b  c  d  e
0  8  4  2  6  0
1  3  4  5  6  7
2  3  3  3  3  3
3  4  4  4  4  4

答案 3 :(得分:2)

pandas.DataFrame.apply

带有pandas.Series.append
我喜欢它,因为它很漂亮

data.apply(pd.Series.append, to_append=a, ignore_index=True)

   a  b  c  d  e
0  8  4  2  6  0
1  3  4  5  6  7
2  3  3  3  3  3
3  4  4  4  4  4

高尔夫球手的答案

data.apply(pd.Series.append, args=(a, 1))

numpy.row_stack

rafaelc's answer

非常相似
pd.DataFrame(np.row_stack([
    data,
    a.to_numpy()[:, None].repeat(data.shape[1], axis=1)
]), columns=data.columns)

   a  b  c  d  e
0  8  4  2  6  0
1  3  4  5  6  7
2  3  3  3  3  3
3  4  4  4  4  4