2017-08-03 83 views
1

我想添加一个新的列到一个数据框,并填充该列与数据框中的多个其他列连接在一起。我怎么能这样做,因为这个新列的长度与数据框中其余列的长度不同?我怎样才能连接垂直多个列在熊猫

例如:

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

我想创造读取1,1,4,2,3,6(除垂直)数据帧一列C

print (df) 
    A B C 
0 1 2 1 
1 1 3 1 
2 4 6 4 
3  2 
4  3 
5  6 
+1

请参阅[如何使重复性好大熊猫的例子(http://stackoverflow.com/questions/20109391/how-编写好的可重现的熊猫示例)并相应编辑您的文章。 – MaxU

+0

对不起,我是新人,这是更好还是应该包括其他东西? – Matthew

+1

您应该添加一个期望的输出数据框的例子,它为我们提供了一个参考点 – DJK

回答

3

稍加修改Anton的解决方案(适用于任何数量的列的工作):

In [99]: df = pd.DataFrame(np.random.randint(0,10,(3,4)), columns=list('ABCD')) 

In [100]: df 
Out[100]: 
    A B C D 
0 9 6 9 6 
1 1 2 0 8 
2 5 0 4 8 

In [105]: pd.concat([df, df.T.stack().reset_index(name='new')['new']], axis=1) 
Out[105]: 
     A B C D new 
0 9.0 6.0 9.0 6.0 9 
1 1.0 2.0 0.0 8.0 1 
2 5.0 0.0 4.0 8.0 5 
3 NaN NaN NaN NaN 6 
4 NaN NaN NaN NaN 2 
5 NaN NaN NaN NaN 0 
6 NaN NaN NaN NaN 9 
7 NaN NaN NaN NaN 0 
8 NaN NaN NaN NaN 4 
9 NaN NaN NaN NaN 6 
10 NaN NaN NaN NaN 8 
11 NaN NaN NaN NaN 8 
+0

谢谢你的回应,如果我想一次连接3列而不是2次,我将如何修改?如果数据集中的列数多于我想要连接的数据列,这会工作吗? – Matthew

+0

@Matthew,是的,它会适用于任何列数 – MaxU

+0

@MaxU很好的修改+1 –

2

如何这一点:

df1 = pd.DataFrame.from_dict({'A':[1,1,4],'B':[2,3,6]}) 

concatvalues = np.concatenate([df1.A.values,df1.B.values]) 

df2 = pd.concat([df1,pd.DataFrame(concatvalues)], ignore_index=True, axis=1) 
df2.columns = np.append(df1.columns.values, "concat") 

print(df2) 

打印

A B concat 
0 1.0 2.0 1 
1 1.0 3.0 1 
2 4.0 6.0 4 
3 NaN NaN 2 
4 NaN NaN 3 
5 NaN NaN 6 
+0

谢谢你的回应,有没有一种方法可以做到这一点的一个更大的数据集,它会是要命名所有数字要困难得多吗? 也可以一次连接3列与此?或者这需要不同的东西?我意识到这种混淆是由于我的不好的例子,但是一旦我意识到我需要一个,就匆匆输入 – Matthew

相关问题