加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 将新数据帧添加到现有数据库,但仅在列名匹配时才添加

发布时间:2020-12-20 12:35:04 所属栏目:Python 来源:网络整理
导读:我有两个数据帧,我试图结合,但我没有得到我想要使用pandas.concat的结果. 我有一个数据库,我想要添加新数据,但仅限于名称列匹配. 我们说df1是: A B C D1 1 2 23 3 4 45 5 6 6 和df2是: A E D F7 7 8 89 9 0 0 我想得到的结果是: A B C D1 1 2 23 3 4 45 5
我有两个数据帧,我试图结合,但我没有得到我想要使用pandas.concat的结果.

我有一个数据库,我想要添加新数据,但仅限于名称列匹配.

我们说df1是:

A B C D
1 1 2 2
3 3 4 4
5 5 6 6

和df2是:

A E D F
7 7 8 8
9 9 0 0

我想得到的结果是:

A B C D
1 1 2 2
3 3 4 4
5 5 6 6
7 - - 8
9 - - 0

空白数据不一定是 – 它可以是任何东西.

我用的时候:

results = pandas.concat([df1,df2],axis = 0,join =’outer’)

它为我提供了一个包含所有A到F列的新数据框,而不是我想要的.关于如何实现这一目标的任何想法?谢谢!

解决方法

您希望使用 pd.DataFrame.align方法并指定您想要与左参数的索引对齐,并且您只关心列.

d1,d2 = df1.align(df2,join='left',axis=1)

然后您可以使用pd.DataFrame.append或pd.concat

pd.concat([d1,d2],ignore_index=True)

   A    B    C  D
0  1  1.0  2.0  2
1  3  3.0  4.0  4
2  5  5.0  6.0  6
3  7  NaN  NaN  8
4  9  NaN  NaN  0

要么

d1.append(d2,ignore_index=True)

   A    B    C  D
0  1  1.0  2.0  2
1  3  3.0  4.0  4
2  5  5.0  6.0  6
3  7  NaN  NaN  8
4  9  NaN  NaN  0

我首选的方法是跳过重新分配名称

pd.concat(df1.align(df2,'left',1),ignore_index=True)

   A    B    C  D
0  1  1.0  2.0  2
1  3  3.0  4.0  4
2  5  5.0  6.0  6
3  7  NaN  NaN  8
4  9  NaN  NaN  0

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读