我正在努力解决一个编程问题,这个问题描述如下。我有一个第一个数据帧,它将客户链接到参考号。你知道吗
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'cus_id' : ['WAT_281', 'NIV_654', 'HUL_602', 'BRA_451'],
'ref_num' : ['1410', '1410', '2960', '5050']})
print(df1)
cus_id ref_num
0 WAT_281 1410
1 NIV_654 1410
2 HUL_602 2960
3 BRA_451 5050
如您所见,每个客户都链接到一个参考号。此外,不同的客户可以链接到同一号码(例如,客户WAT_281
和NIV_654
链接到参考号码1410
)。你知道吗
接下来,我有第二个数据帧,其中每一行描述两个客户之间的链接。你知道吗
df2 = pd.DataFrame({'left_cus_id' : ['NOR_150', 'HUL_602', 'BAS_872', 'THI_028', 'PLA_467', 'ANT_360'],
'right_cus_id' : ['NIV_654', 'THI_028', 'THI_028', 'PLA_467', 'GEN_089', 'KEF_100']})
print(df2)
left_cus_id right_cus_id
0 NOR_150 NIV_654
1 HUL_602 THI_028
2 BAS_872 THI_028
3 THI_028 PLA_467
4 PLA_467 GEN_089
5 ANT_360 KEF_100
从视觉上看,这两个数据帧创建了一个网络。为了更好地解释这一点,我在一个特定的子集上创建了一个图表。你知道吗
我的目标以红色突出显示。具体来说,我想“重组”我原来的网络,以创建一个新的数据框架之间的联系客户和参考号码。我的最终数据帧应该只包括链接到参考号的客户。就我的例子来说,应该是这样的:
cus_id ref_num
0 WAT_281 1410
1 NIV_654 1410
2 NOR_150 1410
3 HUL_602 2960
4 THI_028 2960
5 BAS_872 2960
6 PLA_467 2960
7 BRA_451 5050
不幸的是,我不知道如何实现我的目标。我也不知道如何从两个初始数据帧创建这个网络。我应该注意到,我的问题还包括以下更复杂的关系。你知道吗
任何帮助我实现目标的人都将不胜感激。我感兴趣的代码,可以解决这个问题,并在这个过程中所涉及的步骤的描述。你知道吗
这是我开发的简单解决方案。刚刚用df1的id映射了df2的列。你知道吗
结果:
相关问题 更多 >
编程相关推荐