如何在pandas中连接两个具有不同列名的数据框? - 蟒蛇

时间:2016-04-28 20:59:05

标签: python pandas merge

df1 = pd.DataFrame({'a':[1,2,3],'x':[4,5,6],'y':[7,8,9]})
df2 = pd.DataFrame({'b':[10,11,12],'x':[13,14,15],'y':[16,17,18]})

我正在尝试使用df1中的密钥合并两个数据框。我想我应该使用pd.merge来解决这个问题,但我怎么能告诉pandas将值放在b df2列的adf1列中 a x y 0 1 4 7 1 2 5 8 2 3 6 9 3 10 13 16 4 11 14 17 5 12 15 18 }}。这是我想要实现的输出:

<a class="AClass" href="http://www.mywebsite.com/file1" target="_blank"> File1 </a>    
<a class="AClass" href="http://www.mywebsite.com/file2" target="_blank"> File2 </a>    
<a class="AClass" href="http://www.mywebsite.com/file3" target="_blank"> File3 </a>
<a class="AClass" href="http://www.mywebsite.com/file4" target="_blank"> File4 </a>
<a class="MyClass" href="http://www.mywebsite.com/file5" target="_blank"> File5 </a>
<a class="AClass" href="http://www.mywebsite.com/file6" target="_blank"> File6 </a>
<a class="MyClass" href="http://www.mywebsite.com/file7" target="_blank"> File7 </a>

3 个答案:

答案 0 :(得分:16)

只需使用merge的{​​{3}}和concat列,即可对齐:

In [103]:
df1.merge(df2.rename(columns={'b':'a'}),how='outer')

Out[103]:
    a   x   y
0   1   4   7
1   2   5   8
2   3   6   9
3  10  13  16
4  11  14  17
5  12  15  18

类似地,您可以使用from lxml.html.soupparser import parse import urllib url = 'http://directory.ccnecommunity.org/reports/rptAccreditedPrograms_New.asp?sort=institution' page = parse(urllib.request.urlopen(url)) unis = page.xpath('//tr/td[@valign="top" and @style="width: 50%;padding-right:15px"]/h3/text()') ,但您需要重命名列,如上所示:

execv

答案 1 :(得分:2)

使用numpy连接数据帧,因此您不必重命名所有列(或显式忽略索引)。 np.concatenate也可用于任意数量的数据帧。

df = pd.DataFrame( np.concatenate( (df1.values, df2.values), axis=0 ) )
df.columns = [ 'a', 'x', 'y' ]
df

答案 2 :(得分:2)

您可以重命名列,然后使用函数 Geo-zone-redundant storage (GZRS) combines the high availability benefits of ZRS with GRS. With this replication type, your data is copied across three availability zones in one region. Data is also replicated three times to another secondary region that's paired with it. This way, your zone-redundant data is also secure from regional level outage.append

concat

您还可以将两个数据帧与 df2.columns = df1.columns df1.append(df2, ignore_index=True) # pd.concat([df1, df2], ignore_index=True) 中的 vstack 连接起来,并将生成的 ndarray 转换为数据帧:

numpy