我有一個這樣的資料集:
df = pd.DataFrame({'customer_key': [13453, 16345, 14643, 15346, 13453],
'data_purchased': ['08-07-2021','06-07-2021','05-09-2020','02-09-2021','01-04-2020'],
'price_value': [56, 45, 29, 22, 43]})
資料集一覽:
customer_key data_purchased price_value
13453 08-07-2021 56
16345 06-07-2021 45
14643 05-09-2020 29
15346 02-09-2021 22
13453 01-04-2020 43
我想將此資料集分為 2 個不同的資料集。第一個資料集將僅包含 customer_keys 值重復的那些行(上述資料集中的前 customer_key = 13453)。第二個資料集僅包含那些沒有 customer_key 重復值的行。如何在熊貓中做到這一點?
uj5u.com熱心網友回復:
這是一種方法:
repeat_customer_mask = df.groupby("customer_key")["customer_key"].transform("size") > 1
然后你可以像這樣拆分你的DataFrame:
In [6]: repeat_customers = df[repeat_customer_mask]
In [7]: repeat_customers
Out[7]:
customer_key date_purchased price_value
0 13453 08-07-2021 56
4 13453 01-04-2020 43
In [8]: first_time_customers = df[~repeat_customer_mask]
In [9]: first_time_customers
Out[9]:
customer_key date_purchased price_value
1 16345 06-07-2021 45
2 14643 05-09-2020 29
3 15346 02-09-2021 22
從那里,你可能想要.reset_index()。
uj5u.com熱心網友回復:
您可以使用duplicated方法創建表示重復行的布爾系列(選擇keep=False以將所有重復標記為 True)。然后使用此掩碼過濾 DataFrame:
has_duplicates_mask = df['customer_key'].duplicated(keep=False)
df1 = df[has_duplicates_mask]
df2 = df[~has_duplicates_mask]
df1:
customer_key data_purchased price_value
0 13453 08-07-2021 56
4 13453 01-04-2020 43
df2:
customer_key data_purchased price_value
1 16345 06-07-2021 45
2 14643 05-09-2020 29
3 15346 02-09-2021 22
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408906.html
標籤:
