2017-04-14 65 views
1

我有以下的玩具代码:大熊猫如何Concat的2个dataframes不失列标题

import pandas as pd 
df = pd.DataFrame() 
df["foo"] = [1,2,3,4] 

df2 = pd.DataFrame() 
df2["bar"]=[4,5,6,7] 

df = pd.concat([df,df2], ignore_index=True,axis=1) 
print(list(df)) 

输出:[0,1]
预期输出:[foo,bar](顺序并不重要)
有什么办法连接两个数据帧而不丢失原始列标题,如果我可以保证标题将是唯一的?
想到遍历列然后将它们添加到其中一个DataFrames,但是有没有熊猫函数或concat参数,我不知道?

谢谢!

+1

'传递ignore_index = True将删除所有名称引用.'您是否需要传递ignore_index? – umutto

+0

正如@umutto所说的...离开'ignore_index = True'或者根本不传递它。 – piRSquared

+1

好吧,似乎工作!如果您愿意以此作为答复,我会很乐意接受它! – Priyank

回答

3

merge, join, and concat文档中所述,忽略索引将删除所有名称引用并使用范围(0 ... n-1)来代替。所以它应该给你想要的结果,一旦你删除ignore_index参数或将其设置为false(默认)。

df = pd.concat([df, df2], axis=1) 

这将加入您的DF和基于指数DF2(同索引行会连在一起,如果其他数据框中没有该索引将被连接起来作为男的成员)。

如果您对数据框有不同的索引,并希望以这种方式连接它。您可以创建临时索引并加入,或者在使用concat(...,ignore_index = True)后设置新数据框的列。