簡體   English   中英

熊貓 - 與元組合並在列上

[英]pandas - merge on a column with tuples

我有一個這樣的 df:

>>> df1

        col_1   col_2    labels
0        aaa     abc     (71020,)
1        ddd     ghi     (99213, 99287,)
2        bbb     cde     (77085,)
3        eee     ijk     (99233, 71020, 36415,)

和另一個像這樣的df:

>>> df2

   71020  77085  36415  99213  99287  99233  labels_mg
0    1      0      1      0      0      1     (99233, 71020, 36415,)
1    1      0      0      0      0      0     (71020,)
2    0      0      0      1      1      0     (99213, 99287)
3    0      1      0      0      0      0     (77085,)

並希望通過在 2 個 dfs 上方右連接來生成 df,如下所示:

        col_1   col_2    labels                     71020  77085  36415  99213  99287  99233
0        aaa     abc     (71020,)                    1      0      0      0      0      0
1        ddd     ghi     (99213, 99287,)             0      0      0      1      1      0
2        bbb     cde     (77085,)                    0      1      0      0      0      0
3        eee     ijk     (99233, 71020, 36415,)      1      0      1      0      0      1 

這是我嘗試過的,但這會生成一個具有 0 行的空數據框,但具有所有列名稱。

pd.merge(left=df1, right=df2, left_on=['labels'], right_on=['labels_mg'])

元組在兩個 dfs 中都被解析為元組。 我已經做了literal_eval閱讀從文件到大熊貓DFS后在這兩個DF的列。 兩個 dfs 也不共享公共索引。

我的 df 大小是 (528840, 207) 和 (528840, 5)。 我如何有效地做到這一點?

對我來說,通過問題數據正確工作:

import ast

df1['labels'] = df1['labels'].apply(ast.literal_eval)
df2['labels_mg'] = df2['labels_mg'].apply(ast.literal_eval)
    
df = pd.merge(left=df1, right=df2, left_on=['labels'], right_on=['labels_mg'])
print (df)
  col_1 col_2                 labels  71020  77085  36415  99213  99287  \
0   aaa   abc               (71020,)      1      0      0      0      0   
1   ddd   ghi         (99213, 99287)      0      0      0      1      1   
2   bbb   cde               (77085,)      0      1      0      0      0   
3   eee   ijk  (99233, 71020, 36415)      1      0      1      0      0   

   99233              labels_mg  
0      0               (71020,)  
1      0         (99213, 99287)  
2      0               (77085,)  
3      1  (99233, 71020, 36415)  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM