[英]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()
方法解決您的問題。 您需要使用參數subset
並keep
(刪除所有重復的行):
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.