簡體   English   中英

計算條件下唯一的熊貓數據框

[英]count unique pandas dataframe with condition

我有一個數據框:

df1 = pd.DataFrame({'sku': ['A0', 'A0', 'A2', 'A2', 'A2','A3', 'A3'],
                    'ID': ['10', 'T1', 'T1', 'T2', 'T2','10', '20']})

我想計算ID的唯一值,但僅當以“ T”開頭時。 理想的結果是:

sku
A0    1
A2    2
A3    0

請指教。

sku分組,然后將str.startswith函數應用於每個組的唯一ID系列,以計算以“ T”開頭的唯一ID:

>>> df1.groupby('sku').apply(lambda g: pd.Series(g['ID'].unique()).str.startswith("T").sum())
sku
A0    1
A2    2
A3    0

pd.Series.value_counts后,可以在過濾數據pd.Series.value_counts后使用pd.Series.value_counts

您可以使用分類數據來確保包括所有鍵:

df1 = pd.DataFrame({'sku': ['A0', 'A0', 'A2', 'A2', 'A3', 'A3'],
                    'ID': ['10', 'T1', 'T1', 'T2', '10', '20']})

df1['sku'] = df1['sku'].astype('category')
res = df1.loc[df1['ID'].str[0] == 'T', 'sku'].value_counts(sort=False)

print(res)

A0    1
A2    2
A3    0
Name: sku, dtype: int64

對於唯一值,可以使用groupby + nunique

res = df1[df1['ID'].str[0] == 'T'].groupby('sku')['ID'].nunique()

暫無
暫無

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

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