gpt4 book ai didi

python - Pandas Inner 加入 Lambda

转载 作者:太空宇宙 更新时间:2023-11-04 08:36:10 24 4
gpt4 key购买 nike

我有以下两个框架:

第 1 帧:

            id
0 111-111-111
1 111-111-222
2 222-222-222
3 333-333-333

框架2:

     data       id
0 ones 111-111
1 threes 333-333

而且,我有一个将 frame1.id 映射到 frame2.id 的 lambda 函数:

id_map = lambda x: x[:7]

我的目标是在这两个表之间执行内部连接,但让 id 通过 lambda。所以输出是:

            id    data
0 111-111-111 ones
1 111-111-222 ones
2 333-333-333 threes

我提出了一个相当不优雅的解决方案,几乎 完成了我正在尝试做的事情,但是当内部连接删除行时它会搞砸:

# Save a copy the original ids of frame1
frame1_ids = frame1['id'].copy()
# Apply the id change to frame1
frame1['id'] = frame1['id'].apply(id_map)
# Merge
frame1 = frame1.merge(frame2, how='inner', on='id')
# Set the ids back to what they originally were
frame1['id'] = frame1_ids

有没有优雅的解决方案?

最佳答案

可以使用 assign 创建一个虚拟 id 列 (newid) 以像这样加入:

frame1.assign(newid=frame1['id'].str[:7])
.merge(frame2, left_on='newid', right_on='id', suffixes=('','_y'))
.drop(['id_y','newid'], axis=1)

输出:

            id    data
0 111-111-111 ones
1 111-111-222 ones
2 333-333-333 threes

关于python - Pandas Inner 加入 Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48754109/

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