python pandas:如何使用concat()来做一个SQL联合?

时间:2015-09-18 13:00:31

标签: python pandas union concat

我从文档中了解到我可以使用concat()来执行SQL UNION的等效操作。

但是,当列具有相同名称时,这似乎才有效。当列具有不同的名称时,我该怎么办?

假设我有一个包含3个字段的表:id,value1,value2,我想要一个包含2列的新表,其中id重复,value2附加在value1之后。

在SQL中我会这样做:

select id, value1 from df
UNION
select id, value2 from df

并且value1和value2将在同一列中结束,即使它们具有不同的名称。如果我在熊猫中尝试这个:

import pandas as pd

df=pd.DataFrame()
df['id']=np.arange(0,10)
df['value1']=np.arange(100,110)
df['value2']=np.arange(300,310)

dfnew = pd.concat( [ df[['id','value1']], df[['id','value2']] ])

我最终得到一个包含3而不是2列的数据框。

一种解决方案是手动重命名列。这有效,并给我我想要的结果:

dfnew = pd.concat( [ df[['id','value1']], df[['id','value2']].rename(columns={'value2':'value1'}) ])

但对我来说似乎很复杂。

有更好的想法吗?感谢

1 个答案:

答案 0 :(得分:0)

你可以试试融化功能

mkdir mydata