python:在csv中按唯一列合并重复项

5tmbdcev  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(492)

我的python代码有问题。我正在尝试合并数据框中的行。我有这样的想法:
代码\u idsize1234…18代码12345bigx…12345big.x…def67890中等…x…ghi67890中等…x…jkl13579小…x…xyz
我想按代码id合并重复项,但我想加入代码列中的字符串。就像这样:
代码12345bigxx……;DEF67890中等..xx….ghi;JKL13579小…x…xyz
我和阿格一起做的,但这只是工作的一部分。

  1. g_df = df.groupby("CODE_ID")
  2. group = g_df["CODE"].agg(lambda column: "; ".join(column))
  3. group = group.reset_index(name="CODE")

因为结果是这样的:
代码\u idcode12345;def67890ghi;jkl13579xyz公司
如何添加其余列?或者也许这样做是错误的?

xa9qqrwz

xa9qqrwz1#

你可以转换 X s和 . s到1/0,然后 groupby 以及 max ,并将其Map回 X s和 . 学生:

  1. (df
  2. .set_index(['CODE_ID', 'SIZE'])
  3. .filter(regex='\d+') # numeric column names
  4. .replace({'X': 1, '.': 0}) # map to 1/0s
  5. .groupby(level=[0, 1]) # groupby code and size
  6. .max() # max
  7. .replace({1: 'X', 0: '.'}) # map back to X/.
  8. ).merge( # add ;-separated codes
  9. df.groupby(['CODE_ID', 'SIZE'])["CODE"].apply('; '.join),
  10. left_index=True,
  11. right_index=True,
  12. )

输出:

  1. CODE_ID SIZE 1 2 3 4 18 CODE
  2. 0 12345 Big X X . . . abc; def
  3. 1 13579 Small . . . X . xyz
  4. 2 67890 Medium . . X X . ghi; jkl
展开查看全部

相关问题