【问题标题】:Get unique strings after joining columns in Pandas Dataframe加入 Pandas Dataframe 中的列后获取唯一字符串
【发布时间】:2022-01-21 13:40:05
【问题描述】:

我有一个这样的数据框:

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

【问题讨论】:

标签: python pandas string multiple-columns data-manipulation


【解决方案1】:

使用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]

【讨论】:

  • 是的!太感谢了!我不敢相信我错过了这个!真的很感激。祝你有美好的一天!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 2020-01-19
  • 1970-01-01
  • 2020-07-10
  • 2022-08-19
相关资源
最近更新 更多