我有 3 個單獨的字典:df1、df2 和 df3,列名相同。我正在嘗試合并每對唯一的字典,計算合并字典的長度并將每個長度保存在字典中。我怎樣才能在 for 回圈中做到這一點?
final_dict = {}
df1 = {}
df2 = {}
df3 = {}
df1_df2 = df1.merge(df2, on = ["column_name1, column_name2, column_name3"])
df1_df3 = df1.merge(df3, on = ["column_name1, column_name2, column_name3"])
df2_df3 = df2.merge(df3, on = ["column_name1, column_name2, column_name3"])
length1 = len(df1_df2)
length2 = len(df1_df3)
length3 = len(df2_df3)
我想在 final_dict 中有鍵,值對:
'df1_df2': length1
'df1_df3': length2
'df2_df3': length3
由于我正在對不同的字典對執行相同的合并和長度操作,我可以在 for 回圈中有效地執行此操作以減少代碼冗余嗎?
uj5u.com熱心網友回復:
from itertools import combinations
dict_ls = {'df1': df1, 'df2': df2, 'df3': df3}
cols = ["column_name1", "column_name2", "column_name3"]
final_dict = {}
for l, r in list(combinations(dict_ls, 2)):
df_merged = dict_ls[l].merge(dict_ls[r], on=cols)
final_dict[l '_' r] = len(df_merged)
uj5u.com熱心網友回復:
dfs = [df1, df2, df3]
for i in range(len(dfs) - 1):
for j in range(i 1, len(dfs)):
key = f'df{i 1}_df{j 1}'
merged = dfs[i].merge(dfs[j], on=['column_name1', 'column_name2', 'column_name3'])
final_dict[key] = len(merged)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313023.html
