pandas list去重
时间: 2024-03-08 14:44:27 浏览: 131
在pandas中,可以使用drop_duplicates()方法对列表进行去重操作。drop_duplicates()方法会返回一个去重后的新列表。
下面是使用drop_duplicates()方法进行列表去重的示例代码:
```python
import pandas as pd
# 创建一个包含重复元素的列表
data = [1, 2, 3, 2, 4, 3, 5]
# 将列表转换为pandas的Series对象
series = pd.Series(data)
# 使用drop_duplicates()方法进行去重
new_series = series.drop_duplicates()
# 打印去重后的结果
print(new_series)
```
运行以上代码,输出结果为:
```
0 1
1 2
2 3
4 4
6 5
dtype: int64
```
可以看到,重复的元素被去除,得到了一个去重后的新列表。
相关问题
python pandas 数据去重
在Python中,使用pandas库可以很方便地进行数据去重操作。下面是三种常见的方法:
1. 使用`drop_duplicates`方法:这个方法适用于DataFrame格式的数据,可以去除指定列下的重复行。具体代码如下:
```python
import pandas as pd
# 读取数据
df = pd.read_excel('666.xlsx')
# 去重
df.drop_duplicates(subset=['ASIN'], keep='first', inplace=True)
# 打印去重后的数据
print(df)
```
引用自
2. 使用`drop_duplicates`方法:这个方法同样适用于DataFrame格式的数据。具体代码如下:
```python
import pandas as pd
# 读取数据
csv = pd.read_csv('E:/aaa/03.csv', low_memory=False, error_bad_lines=False)
df = pd.DataFrame(csv)
# 打印原始数据行数
print(df.shape)
# 去重
f = df.drop_duplicates(keep=False)
# 打印去重后的数据行数
print(f.shape)
# 将去重后的数据写入新文件
f.to_csv('E:/aaa/distionct_03.csv', index=None)
```
引用自
总结起来,以上两种方法都是使用pandas的`drop_duplicates`方法来进行数据去重。第一种方法是针对Excel文件,第二种方法是针对CSV文件。根据你的具体需求选择其中的一种方法即可。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [pandas怎么去除数据中的重复值](https://blog.csdn.net/Leexin_love_Ling/article/details/114024136)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [python数据去重(pandas)](https://blog.csdn.net/qq_39012566/article/details/98633780)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
python 对list 去重
### 去重方法概述
在 Python 中,有多种方式可以实现列表的去重操作。以下是六种常见的方法来移除列表中的重复项:
#### 方法一:使用 `set` 数据结构
通过将列表转换为集合(`set`),可以自动去除其中的重复元素,因为集合不允许存在重复值。
```python
test_list = [1, 3, 5, 6, 3, 5, 6, 1]
res = list(set(test_list))
print("The list after removing duplicates : " + str(res)) # 输出可能无序
```
这种方法简单高效,但由于集合不保留顺序,因此最终的结果可能会改变原始列表中元素的位置[^1]。
#### 方法二:利用列表推导式保持顺序
如果需要保留原列表中元素的顺序,则可以通过列表推导式配合条件判断完成这一目标。
```python
test_list = [1, 3, 5, 6, 3, 5, 6, 1]
seen = set()
res = [x for x in test_list if not (x in seen or seen.add(x))]
print("The list after removing duplicates : " + str(res))
```
此代码片段不仅实现了去重功能,还维持了原有数据的排列次序。
#### 方法三:借助 Pandas 的 `.drop_duplicates()` 函数
对于更复杂的数据处理场景,Pandas 提供了一个便捷函数用于删除 DataFrame 或 Series 对象内的冗余记录。
```python
import pandas as pd
test_series = pd.Series([1, 3, 5, 6, 3, 5, 6, 1])
res = test_series.drop_duplicates().tolist()
print("The list after removing duplicates : " + str(res))
```
上述例子展示了如何运用 Pandas 库来进行高效的去重工作[^2]。
#### 方法四:传统循环法
这是最基础也是最容易理解的一种做法——遍历整个输入序列并逐一检查当前项目是否已经存在于结果集中;如果不是的话就将其加入到新的数组里头。
```python
test_list = [1, 3, 5, 6, 3, 5, 6, 1]
res = []
for i in test_list:
if i not in res:
res.append(i)
print("The list after removing duplicates : " + str(res))
```
尽管这种策略易于理解和实施,但它的时间复杂度较高(O(n²)),当面对大规模数据集时性能表现不佳。
#### 方法五:字典键特性法
由于字典类型的 key 是唯一的,所以我们可以巧妙地利用这一点来做文章:
```python
test_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
dict.fromkeys(test_list).keys()
# 结果会是一个 dict_keys object 类型的对象,
# 如果想要得到list形式则需进一步转化成list(dict_keys_object)
```
注意这里我们只讨论不可变对象作为key的情况(比如字符串),如果是可变对象像lists就不能直接这样用了.
#### 方法六:OrderedDict.fromkeys()
为了既能够去掉重复又能保存原有的先后关系,还可以考虑采用collections模块下的OrderedDict类所提供的fromkeys静态方法.
```python
from collections import OrderedDict
test_list = [1, 3, 5, 6, 3, 5, 6, 1]
res = list(OrderedDict.fromkeys(test_list))
print("The list after removing duplicates : " + str(res))
```
这种方式同样能很好地兼顾效率与效果,在实际应用中有较高的参考价值。
### 性能对比分析
不同的算法其时间空间消耗各有千秋,具体选用哪一种取决于应用场景以及个人偏好等因素。通常来说基于哈希表的操作如sets/dicts往往具有较好的平均情况下的运行速度O(1),但对于非常大的数据量或者特殊情况下也可能退化至线性甚至平方级别的时间开销;而纯迭代式的解决方案虽然逻辑清晰直观易懂但普遍缺乏竞争力除非是在极小规模下才显得合理可行。
阅读全文
相关推荐














