在 Pandas Dataframe 中加入列后获取唯一字符串

Get unique strings after joining columns in Pandas Dataframe

我有一个这样的数据框:

data = {'col1':['XXX', 'AAA', 'ZZZ'],'col2':['BBB', 'AAA','TTT'], 'col3': ['BBB', 'CCC', 'TTT'], 'col4': ['XXX', 'CCC', 'ZZZ']} 

df = pd.DataFrame(data)
df

我想生成一个将字符串连接在一起但不自动按字母顺序排列的列: 我希望它使用 col1 作为组合的第一部分。

但是,我有 运行 这段代码,并且得到的输出优先考虑字母顺序 - 我不想要这样。我想让它使用代码中规定的顺序

df['combos'] = ["_".join((k for k in set(v) if pd.notnull(k))) for v in
                  df[["col1", "col2", "col3", "col4"]].values]
df

使用 dict.fromkey 技巧进行原始排序:

df['combos'] = ["_".join(dict.fromkeys(k for k in v if pd.notnull(k))) for v in
                  df[["col1", "col2", "col3", "col4"]].values]
print (df)
  col1 col2 col3 col4   combos
0  XXX  BBB  BBB  XXX  XXX_BBB
1  AAA  AAA  CCC  CCC  AAA_CCC
2  ZZZ  TTT  TTT  ZZZ  ZZZ_TTT

如果没有缺失值:

df['combos'] = ["_".join(dict.fromkeys(v)) for v in
                  df[["col1", "col2", "col3", "col4"]].values]