python - Python循环两个不同的数据帧以创建一个新列
问题描述
我想通过引用另一个数据框向数据框添加一个新列。
我想使用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 有很多类似的答案,但这里唯一的区别是您在 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 - 尝试使用 cv2.resize 在循环中调整图像大小
- scala - 如何使用 Spark 在 DataFrame 中添加额外的日期列?
- nestjs - When using nested subscribers app will crash (NestJs+TypeOrm+Mysql)
- javascript - Plotly react. The annotation disappears after changing border color
- cluster-computing - Tile38 - Sharding across multiple/disparate instantiations
- excel - Looping through Macro to sort through column of data
- typescript - Isolate cause of Typescript max recursion error with getAwaitedTypeWorker => getAwaitedType => mapType
- .net-core - .Net Core The name 'Host' does not exist
- jquery - 防止用户注册不同的电子邮件域
- reactjs - How to fetch data after a specific Interval with useState, useEffect and useCallback in React with proper dependencies