Python逻辑以迭代方式比较两个文件并建立父子关系

 收藏

有人可以帮我一个简单的逻辑吗?我已经挠了两天。

问题:-我有两个CSV文件。尝试建立父子关系,直到该关系用尽了两个文件。

假定两个文件在第一个csv中都有2列A,B,在第二个CSV中具有C,D。      “ A”应与“ C”匹配,对于匹配的行[内部联接],请选择“ D”,然后将其与“ B”进行比较[再次进行内部联接]。然后再次从结果中将A与“ C”进行匹配,直到关系或链停止在某处。

基本上,在我的问题中B是D的孩子,而B本身可能还有另一个孩子。

不知道我说清楚了吗

感谢您提供帮助。我已经创建了虚拟数据。请查看是否有帮助

在两个csv文件中输入数据,如下所示

A   B            C    D
310 9000        310 8000                                                                         
320 8000        320 2000   
330 2000        330 1000
340 1000        350 2500

新文件或数据帧中的预期输出:-链在1000处停止,因为340在第二个csv中没有行。

预期输出数据:

    A   B    C   D    E   F
1. 310 8000 320 2000 330 1000
回复
  • qenim 回复

    根据我的理解,我认为这是您需要的:

    df1
    
        A   B
    0   310 9000
    1   320 8000
    2   330 2000
    
    df2
    
         C  D
    0   310 8000
    1   320 2000
    2   330 1000
    

    合并dfs:

    merged_df = pd.merge(df1, df2, left_on = ['A'], right_on = ['C'])
    merged_df
         A   B       C  D
    0   310 9000    310 8000
    1   320 8000    320 2000
    2   330 2000    330 1000
    

    假设当B> D时D是B的子代:

    result = merged_df.loc[merged_df['B']>merged_df['D'],['C', 'D']].values.ravel()
    result
    array([ 310, 8000,  320, 2000,  330, 1000], dtype=int64)
    

    将它们转换为系列:

    pd.Series(result, index = list('ABCDEF'))
    A     310
    B    8000
    C     320
    D    2000
    E     330
    F    1000