【发布时间】:2020-06-08 14:34:12
【问题描述】:
我有一个 pandas 数据框,它是其中 1 列创建重复行的查询的结果。我需要帮助按名称识别重复项的非重复值,然后动态创建具有所有值的新列,然后删除重复项。 Mike 下面的“代码”列中有重复项,“Lang”列中有标记,所以我希望每行都有一个新列用于非重复值。
ID | Name | Code | Lang |
1 | Mike | 25 | SQL |
1 | Mike | 26 | SQL |
1 | Mike | 27 | SQL |
2 | Mark | 39 | NoSQL |
2 | Mark | 39 | SQL |
循环并确定哪些列不重复,复制不重复的值,写入第一个接近重复行的新列,删除重复。
ID | Name | Code | Code2 | Code3 | Lang | Lang2 |
1 | Mike | 25 | 26 | 27 | SQL | . |
2 | Mark | 39 | . | . | NoSQL | SQL |
我可以使用以下内容仅获取重复的行,但是我进行了大量研究并且无法获取我的结果。我正在探索枢轴和融化作为一种选择,但被困在动态列部分。
dup_rows = orig_df[orig_df.duplicated(['Name'])]
【问题讨论】:
-
您需要特定输出是否有特殊原因?一般来说,我发现宽数据更难处理,而且会占用更多空间。上面的操作绝对不是微不足道的。
-
我有很多由我想保留为新列的几列生成的重复项。在大多数情况下,它是一两个重复项,并且只有 1-2 列,因此不会变得太宽。我可以在 SAS 中相当容易地做到这一点,但后来改用 python。我也研究过用 SQL 编写它,但认为 python 将具有相当容易做到这一点的函数。我可以忍受这不是动态的,并确定哪些列产生了重复项并仅解决这些问题。
标签: python pandas dataframe duplicates