gpt4 book ai didi

Python循环两个不同的数据帧来创建一个新列

转载 作者:行者123 更新时间:2023-12-01 09:25:16 25 4
gpt4 key购买 nike

我想通过引用另一个数据框来向数据框添加新列。

我想使用startswith方法运行if语句,将df1['BSI']列与df2['initial']匹配,以分配相应的df2['marker'],并为df1提供一个由标记组成的新列,我将用于 cartopy 标记样式。

我在 df1 循环内循环 df2 时遇到问题。我基本上不知道如何将 df1 项目调用到 df2 循环上以与 df2 项目进行比较。

df1 看起来像这样:

    BSI     Shelter_Number  Location                            Latitude    Longitude
0 AA-010 1085 SUSSEX (N SIDE) & RIDEAU FALLS 45.439571 -75.695694
1 AA-030 3690 SUSSEX (E SIDE) & ALEXANDER NS 45.442795 -75.692322
2 AA-180 279 CRICHTON (E SIDE) & BEECHWOOD FS 45.439556 -75.676849
3 AA-200 2018 BEECHWOOD (S SIDE) & CHARLEVOIX NS 45.441154 -75.673622
4 AA-220 3301 BEECHWOOD (S SIDE) & MAISONNEUVE NS 45.442188 -75.671356

df2 看起来像这样:

    initial marker
0 AA bo
1 AB bv
2 AC b^
3 AD b<
4 AE b>

期望的输出是:

BSI, Shelter_Number, Location, Latitude, Longitude, marker

0
AA-010 1085 SUSSEX (N SIDE) & RIDEAU FALLS 45.439571 -75.695694 bo

1
AA-030 3690 SUSSEX (E SIDE) & ALEXANDER NS 45.442795 -75.692322 bo

2
AA-180 279 CRICHTON (E SIDE) & BEECHWOOD FS 45.439556 -75.676849 bo

3
AA-200 2018 BEECHWOOD (S SIDE) & CHARLEVOIX NS 45.441154 -75.673622 bo

4
AA-220 3301 BEECHWOOD (S SIDE) & MAISONNEUVE NS 45.442188 -75.671356 bo

最佳答案

使用 map 。事实上,使用 map 有很多类似的答案,但唯一的区别是您仅使用 df1 中 BSI 的一部分进行匹配

df1['marker'] = df1['BSI'].str.extract('(.*)-', expand = False).map(df2.set_index('initial').marker)



BSI Shelter_Number Location Latitude Longitude marker
0 AA-010 1085 SUSSEX (N SIDE) & RIDEAU FALLS 45.439571 -75.695694 bo
1 AA-030 3690 SUSSEX (E SIDE) & ALEXANDER NS 45.442795 -75.692322 bo
2 AA-180 279 RICHTON (E SIDE) & BEECHWOOD FS 45.439556 -75.676849 bo
3 AA-200 2018 BEECHWOOD (S SIDE) & CHARLEVOIX NS 45.441154 -75.673622 bo
4 AA-220 3301 BEECHWOOD (S SIDE) & MAISONNEUVE NS 45.442188 -75.671356 bo

关于Python循环两个不同的数据帧来创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50471846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com