簡體   English   中英

如何計算數據框中另一列中每個唯一值對應的值?

[英]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.transformDataFrameGroupBy.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.

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