我有一個這樣的資料框:我的目標是計算按 id 分組的國家數量,但僅限于(美國、加拿大、墨西哥)
| ID | 國家 | 期望輸出 |
|---|---|---|
| 一個 | 美國 | 1 |
| b | 加拿大 | 2 |
| b | 加拿大 | 2 |
| C | 中國 | 0 |
| d | 墨西哥 | 3 |
| d | 墨西哥 | 3 |
| d | 墨西哥 | 3 |
uj5u.com熱心網友回復:
您可以通過以下方式做到這一點
df["desired_output"] = df.groupby(["id"])["id"].transform("count")
df.loc[~df['country'].isin(["usa","canada","mexico"]), 'desired_output'] = 0
uj5u.com熱心網友回復:
Series.isin與Groupby.transform和一起使用Series.fillna:
In [21]: df['desired_output'] = df[df.country.isin(["usa","canada","mexico"])].groupby('id')['country'].transform('size')
In [24]: df['desired_output'] = df['desired_output'].fillna(0).astype(int)
In [25]: df
Out[26]:
id country desired_output
0 a usa 1
1 b canada 2
2 b canada 2
3 c china 0
4 d mexico 3
5 d mexico 3
6 d mexico 3
uj5u.com熱心網友回復:
將id或其他列轉換為NaNin Series.where,Series.isin然后通過with計算非NaNs 行:GroupBy.transformGroupBy.count
L = ["usa","canada","mexico"]
df['desired_output'] = df.id.where(df.country.isin(L)).groupby(df['id']).transform('count')
print (df)
id country desired_output
0 a usa 1
1 b canada 2
2 b canada 2
3 c china 0
4 d mexico 3
5 d mexico 3
6 d mexico 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/417506.html
標籤:
上一篇:在Python中收到“ImportError:Nomodulenamedrequests”錯誤
下一篇:使用熊貓從一行中獲取價值
