【发布时间】:2021-11-10 06:16:49
【问题描述】:
我正在尝试对 pandas 中的行进行重复数据删除。我有数百万行重复,它不适合我正在尝试做的事情。
从这里:
col1 col2
0 1 23
1 1 47
2 1 58
3 1 9
4 1 4
我想得到这个:
col1 col2
0 1 [23, 47, 58, 9, 4]
我已经设法通过为每个电子表格编写单独的脚本来手动完成此操作,但如果有一种更通用的方式来做这件事,那就太好了。
到目前为止我已经尝试过:
def remove_duplicates(self, df):
ids = df[self.key_field].unique()
numdicts = []
for i in ids:
instdict = {self.key_field: i}
for col in self.deduplicate_fields:
xf = df.loc[df[self.key_field] == i]
instdict[col] = str(list(xf[col]))
numdicts.append(instdict)
for n in numdicts:
print(pd.DataFrame(data=n, index=self.key_field))
return df
但令人难以置信的是,这会返回与我开始时相同的内容。
到目前为止,我管理它的唯一方法是手动为每一列创建列表并循环遍历数据框中的唯一索引键,并将所有重复项添加到列表中,然后压缩所有列表并创建来自他们的数据框。
但是,当需要去重的列数未知时,这似乎不起作用。
如果有更好的方法,我们将不胜感激!
提前致谢!
【问题讨论】:
-
对于数百万行,您真的要将列表放入数据框中吗?列表中的所有这些指针很容易失去减少行的效率增益。此外,您将失去进行矢量化计算的能力。
-
有趣,谢谢!不幸的是,由于我们对正在使用的开发提供商的限制,我一直坚持这种方式。
标签: python python-3.x pandas