簡體   English   中英

從一列中獲取所有不同的值,其中另一列對於初始列中的每個值至少有兩個不同的值

[英]Get all distinct values from a column where another column has at least two distinct values for each value in the initial column

我有一個非常大的數據集 (20GB+),我需要從 A 列中選擇所有不同的值,其中對於 A 列上的每個不同值,B 列中至少有兩個其他不同值。

對於以下數據框:

| A | B |
|---|---|
| x | 1 |
| x | 2 |
| y | 1 |
| y | 1 |

應該只返回 x,因為它在 B 列上有兩個不同的值,而 y 只有 1 個不同的值。

以下代碼可以解決問題,但由於數據集非常大,因此需要很長時間(以小時為單位):

def get_values(list_of_distinct_values, dataframe):
    valid_values = []
    for value in list_of_distinct_values:
        value_df = dataframe.loc[dataframe['A'] == value]
        if len(value_df.groupby('B')) > 1:
            valid_values.append(value)
    return valid_values

有人可以建議一種更快的方法嗎?

我認為您可以使用數據drop_duplicates()方法解決您的問題。 您需要使用參數subsetkeep (刪除所有重復的行):

import pandas as pd
df = pd.DataFrame({
    'A': ["x", "x", "y", "y"],
    'B': [1, 2, 1, 1],
})
df.drop_duplicates(subset=['A', 'B'], keep=False).drop_duplicates(subset=['A'])['A']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM