Pandas Tutorials

Pandas DataFrame中高效提取和排序唯一值

Spread the love

Pandas是一个强大的Python库,用于数据操作和分析。一个常见的任务是从DataFrame列中提取唯一值,然后对它们进行排序。本文探讨了实现此目的的两种有效方法。

目录

使用unique()方法提取唯一值

unique()方法提供了一种简洁的方法来从Pandas Series(单列)中获取唯一值。它返回一个仅包含唯一元素的NumPy数组,并保留其原始顺序。


import pandas as pd

data = {'col1': ['A', 'B', 'A', 'C', 'B', 'D'],
        'col2': [1, 2, 1, 3, 2, 4]}
df = pd.DataFrame(data)

unique_values = df['col1'].unique()
print(unique_values)  # 输出: ['A' 'B' 'C' 'D']

此代码创建了一个示例DataFrame,然后在’col1’列上使用unique()。输出是一个NumPy数组,显示其首次出现顺序的唯一值。

使用drop_duplicates()方法提取唯一值

drop_duplicates()方法提供了更大的灵活性,尤其是在处理多列时。虽然主要用于删除重复行,但它可以有效地从单列中提取唯一值。


import pandas as pd

data = {'col1': ['A', 'B', 'A', 'C', 'B', 'D'],
        'col2': [1, 2, 1, 3, 2, 4]}
df = pd.DataFrame(data)

unique_values = df['col1'].drop_duplicates().values
print(unique_values)  # 输出: ['A' 'B' 'C' 'D']

此示例直接将drop_duplicates()应用于’col1′ Series。.values属性将结果转换为NumPy数组。唯一值的顺序与其在DataFrame中的首次出现顺序相同。

排序唯一值

以上两种方法都返回唯一值,但不一定按排序顺序排列。要排序,可以使用NumPy的sort()函数或Pandas的sort_values()方法。


import pandas as pd
import numpy as np

data = {'col1': ['A', 'B', 'A', 'C', 'B', 'D'],
        'col2': [1, 2, 1, 3, 2, 4]}
df = pd.DataFrame(data)

# 使用unique()和sort()
unique_values = np.sort(df['col1'].unique())
print(unique_values)  # 输出: ['A' 'B' 'C' 'D']

# 使用drop_duplicates()和sort_values()
unique_values = df['col1'].drop_duplicates().sort_values().values
print(unique_values)  # 输出: ['A' 'B' 'C' 'D']

这展示了使用这两种方法进行排序。np.sort()作用于来自unique()的NumPy数组,而sort_values()作用于来自drop_duplicates()的Pandas Series。两者都产生一个排序数组。对于使用sort_values()的降序,请使用ascending=False

总而言之,unique()drop_duplicates()都可以有效地提取唯一值。最佳选择取决于您的具体需求以及您是处理单列还是多列。请记住使用适当的方法对结果进行排序以获得所需的顺序。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注