大佬教程收集整理的这篇文章主要介绍了Python:按 CSV 中的唯一列合并重复项,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的 Python 代码有问题。我正在尝试合并数据框中的行。我有类似的东西:
CODE_ID | 尺寸 | 1 | 2 | 3 | 4 | ... | 18 | 代码 |
---|---|---|---|---|---|---|---|---|
12345 | 大 | X | . | . | . | ... | . | ABC |
12345 | 大 | . | X | . | . | ... | . | 定义 |
67890 | 中 | . | . | . | X | ... | . | 你好 |
67890 | 中 | . | . | X | . | ... | . | jkl |
13579 | 小 | . | . | . | X | ... | . | xyz |
我想按 CODE_ID 合并重复项,但我想加入 CODE 列中的字符串。就这样:
CODE_ID | 尺寸 | 1 | 2 | 3 | 4 | ... | 18 | 代码 |
---|---|---|---|---|---|---|---|---|
12345 | 大 | X | X | . | . | ... | . | abc;定义 |
67890 | 中 | . | . | X | X | ... | . | 吉; jkl |
13579 | 小 | . | . | . | X | ... | . | xyz |
我用 agg 做到了,但这只是工作的一部分。
g_df = df.groupby("CODE_ID")
group = g_df["CODE"].agg(lambda column: "; ".join(column))
group = group.reset_index(name="CODE")
因为结果是这样的:
CODE_ID | 代码 |
---|---|
12345 | abc;定义 |
67890 | 吉; jkl |
13579 | xyz |
如何添加其余的列?或者也许这是错误的方法?
您可以将 X
s 和 .
s 转换为 1/0,然后是 groupby
和 @H_104_221@max,并将其映射回 X
s 和 { {1}}:
.
输出:
(df
.set_index(['CODE_ID','SIZE'])
.filter(regex='\d+') # numeric column names
.replace({'X': 1,'.': 0}) # map to 1/0s
.groupby(level=[0,1]) # groupby code and size
.max() # max
.replace({1: 'X',0: '.'}) # map BACk to X/.
).merge( # add ;-separated codes
df.groupby(['CODE_ID','SIZE'])["CODE"].apply('; '.join),left_index=True,right_index=True,)
以上是大佬教程为你收集整理的Python:按 CSV 中的唯一列合并重复项全部内容,希望文章能够帮你解决Python:按 CSV 中的唯一列合并重复项所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。