![](/img/trans.png)
[英]How to count the unique values of a column and append each value to a dictionary?
[英]How to count the values corresponding to each unique value in another column in a dataframe?
我有一張這樣的桌子:
Car Type | Color | ID
VW | Blue | 123
VW | Red | 567
VW | Black | 779
-----------------------
AUDI | Silver | 112
AUDI | Black | 356
AUDI | White | 224
我怎么能得到這樣的東西? 其中每一行包含每種汽車類型的顏色計數?
Car Type | Color | ID | Total
VW | Blue | 123 | 3
VW | Red | 567 | 3
VW | Black | 779 | 3
-----------------------
AUDI | Silver | 112 | 3
AUDI | Black | 356 | 3
AUDI | White | 224 | 3
干杯...
用於每個組的唯一值數量使用GroupBy.transform
和DataFrameGroupBy.nunique
:
df['Total'] = df.groupby('Car Type')['Color'].transform('nunique')
用於每個組的計數值使用DataFrameGroupBy.size
:
df['Total'] = df.groupby('Car Type')['Color'].transform('size')
與改變一個值的區別:
df['Total_uniq'] = df.groupby('Car Type')['Color'].transform('nunique')
df['Total_size'] = df.groupby('Car Type')['Color'].transform('size')
print (df)
Car Type Color ID Total_uniq Total_size
0 VW Blue 123 2 3
1 VW Blue 567 2 3 <- set value to Blue
2 VW Black 779 2 3
3 AUDI Silver 112 3 3
4 AUDI Black 356 3 3
5 AUDI White 224 3 3
這是另一個類似於 Jezrael 的選項,他打敗了我!
import pandas as pd
a = {'Car type':['VW','VW','VW','AUDI','AUDI','AUDI'],'Color':['Blue','Red','Black','Silver','Black','White'],'ID':[123,567,779,112,356,224]}
df = pd.DataFrame(a)
print(df)
df_a = df.merge(df.groupby(['Car type'],as_index=False).agg({'Color':'nunique'}),how='left',on='Car type').rename(columns={'Color_x':'Color','Color_y':'Unique_colors'})
輸出:
Car type Color ID Unique_colors
0 VW Blue 123 3
1 VW Red 567 3
2 VW Black 779 3
3 AUDI Silver 112 3
4 AUDI Black 356 3
5 AUDI White 224 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.