i have a table like this:
Car Type | Color | ID
VW | Blue | 123
VW | Red | 567
VW | Black | 779
-----------------------
AUDI | Silver | 112
AUDI | Black | 356
AUDI | White | 224
how can i get something like this? where each row contains the count of colors for each car type?
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
Cheers...
Use for number of unique values per groups use GroupBy.transform
with DataFrameGroupBy.nunique
:
df['Total'] = df.groupby('Car Type')['Color'].transform('nunique')
Use for count values per groups use DataFrameGroupBy.size
:
df['Total'] = df.groupby('Car Type')['Color'].transform('size')
Difference with changed one value:
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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加