Hướng dẫn how do you remove duplicates from a dataframe in python based on column? - làm cách nào để xóa các bản sao khỏi khung dữ liệu trong python dựa trên cột?

DataFrame.drop_duplicates (tập hợp con = none, *, keep = 'first', inplace = false, ond_index = false) [nguồn]#drop_duplicates(subset=None, *, keep='first', inplace=False, ignore_index=False)[source]#

Trả về DataFrame với các hàng trùng lặp bị xóa.

Xem xét các cột nhất định là tùy chọn. Các chỉ mục, bao gồm các chỉ mục thời gian bị bỏ qua.

Nhãn tham sốSubSetColumn hoặc trình tự của nhãn, tùy chọnsubsetcolumn label or sequence of labels, optional

Chỉ xem xét các cột nhất định để xác định các bản sao, theo mặc định, sử dụng tất cả các cột.

Giữ {’đầu tiên,’ cuối cùng, sai}, mặc định ’đầu tiên{‘first’, ‘last’, False}, default ‘first’

Xác định những sao chép (nếu có) để giữ. - first: Drop trùng lặp ngoại trừ lần xuất hiện đầu tiên. -

>>> df.drop_duplicates()
    brand style  rating
0  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0
0: Drop trùng lặp ngoại trừ lần xuất hiện cuối cùng. - Sai: Thả tất cả các bản sao.

inplaceBool, mặc định saibool, default False

Có nên sửa đổi DataFrame thay vì tạo một cái mới.

bỏ qua_indexbool, mặc định saibool, default False

Nếu đúng, trục kết quả sẽ được dán nhãn 0, 1,,, n - 1.

Mới trong phiên bản 1.0.0.

Trả về dataFrame hoặc không có

DataFrame với các bản sao được xóa hoặc không có nếu

>>> df.drop_duplicates()
    brand style  rating
0  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0
1.

Ví dụ

Xem xét bộ dữ liệu chứa xếp hạng ramen.

>>> df = pd.DataFrame({
...     'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Indomie'],
...     'style': ['cup', 'cup', 'cup', 'pack', 'pack'],
...     'rating': [4, 4, 3.5, 15, 5]
... })
>>> df
    brand style  rating
0  Yum Yum   cup     4.0
1  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0

Theo mặc định, nó loại bỏ các hàng trùng lặp dựa trên tất cả các cột.

>>> df.drop_duplicates()
    brand style  rating
0  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0

Để loại bỏ các bản sao trên (các) cột cụ thể, hãy sử dụng

>>> df.drop_duplicates()
    brand style  rating
0  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0
2.

>>> df.drop_duplicates(subset=['brand'])
    brand style  rating
0  Yum Yum   cup     4.0
2  Indomie   cup     3.5

Để loại bỏ các bản sao và giữ các lần xuất hiện cuối cùng, hãy sử dụng

>>> df.drop_duplicates()
    brand style  rating
0  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0
3.

>>> df.drop_duplicates(subset=['brand', 'style'], keep='last')
    brand style  rating
1  Yum Yum   cup     4.0
2  Indomie   cup     3.5
4  Indomie  pack     5.0

Tôi đã được đưa đến đây bởi một liên kết từ một câu hỏi trùng lặp.

Chỉ với hai cột, sẽ không đơn giản hơn để làm:

df.groupby('A')['B'].max().reset_index()

Và để giữ lại một hàng đầy đủ (khi có nhiều cột hơn, đó là những gì "câu hỏi trùng lặp" đã đưa tôi đến đây đã hỏi):

df.loc[df.groupby(...)[column].idxmax()]

Ví dụ: để giữ lại hàng đầy đủ trong đó

>>> df.drop_duplicates()
    brand style  rating
0  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0
4 lấy tối đa của nó, cho mỗi nhóm
>>> df.drop_duplicates()
    brand style  rating
0  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0
5, chúng tôi sẽ làm:

out = df.loc[df.groupby(['A', 'B')['C'].idxmax()]

Khi có tương đối ít nhóm (tức là, rất nhiều bản sao), điều này nhanh hơn giải pháp

>>> df.drop_duplicates()
    brand style  rating
0  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0
6 (ít sắp xếp):

Setup:

n = 1_000_000
df = pd.DataFrame({
    'A': np.random.randint(0, 20, n),
    'B': np.random.randint(0, 20, n),
    'C': np.random.uniform(size=n),
    'D': np.random.choice(list('abcdefghijklmnopqrstuvwxyz'), size=n),
})

(Thêm

>>> df.drop_duplicates()
    brand style  rating
0  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Indomie  pack     5.0
7 để đảm bảo giải pháp bằng nhau):

%timeit df.loc[df.groupby(['A', 'B'])['C'].idxmax()].sort_index()
# 101 ms ± 98.7 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

%timeit df.sort_values(['C', 'A', 'B'], ascending=False).drop_duplicates(['A', 'B']).sort_index()
# 667 ms ± 784 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)

Làm cách nào để loại bỏ các bản sao khỏi một cột cụ thể?

Để loại bỏ các bản sao của chỉ một hoặc một tập hợp các cột, chỉ định tập hợp con là cột hoặc danh sách các cột phải là duy nhất. Để thực hiện điều kiện này theo giá trị của một cột khác, bạn có thể sắp xếp_values ​​(colname) và chỉ định giữ bằng đầu tiên hoặc cuối cùng.specify subset as the individual column or list of columns that should be unique. To do this conditional on a different column's value, you can sort_values(colname) and specify keep equals either first or last .

Làm thế nào để bạn loại bỏ các bản sao trong một cột trong Python?

Để loại bỏ các bản sao trên (các) cột cụ thể, hãy sử dụng tập hợp con. Để loại bỏ các bản sao và giữ các lần xuất hiện cuối cùng, hãy sử dụng giữ.use subset . To remove duplicates and keep last occurrences, use keep .

Làm cách nào để loại bỏ các bản sao dựa trên các điều kiện trong gấu trúc?

Cú pháp của DF ...
Cú pháp: dataFrame.drop_duplicates (tập hợp con = không, giữ = 'first', inplace = false).
Parameters:.
Loại trả về: DataFrame với các hàng trùng lặp bị xóa tùy thuộc vào các đối số được truyền ..

Làm cách nào để loại bỏ các bản sao khỏi một khung dữ liệu trong Python?

Pandas drop_duplicates () Chức năng cú pháp nếu 'đầu tiên', các hàng trùng lặp ngoại trừ hàng đầu tiên bị xóa.Nếu 'cuối cùng', các hàng trùng lặp ngoại trừ hàng cuối cùng sẽ bị xóa.Nếu sai, tất cả các hàng trùng lặp bị xóa.Thay thế: Nếu đúng, DataFrame nguồn được thay đổi và không có gì được trả về.