use*_*559 5 csv grouping dataframe pandas
我有一个清单:
citylist = ['New York', 'San Francisco', 'Los Angeles', 'Chicago', 'Miami']
Run Code Online (Sandbox Code Playgroud)
和具有这些值的熊猫数据框 df1
first last city email
John Travis New York a@email.com
Jim Perterson San Franciso, Los Angeles b@email.com
Nancy Travis Chicago b1@email.com
Jake Templeton Los Angeles b3@email.com
John Myers New York b4@email.com
Peter Johnson San Franciso, Chicago b5@email.com
Aby Peters Los Angeles b6@email.com
Amy Thomas San Franciso b7@email.com
Jessica Thompson Los Angeles, Chicago, New York b8@email.com
Run Code Online (Sandbox Code Playgroud)
我想计算城市列表中每个城市在数据框列“城市”中出现的次数:
New York 3
San Francisco 3
Los Angeles 4
Chicago 3
Miami 0
Run Code Online (Sandbox Code Playgroud)
目前我有
dftest = df1.groupby(by='city', as_index=False).agg({'id': pd.Series.nunique})
Run Code Online (Sandbox Code Playgroud)
最后将“洛杉矶、芝加哥、纽约”计为 1 个唯一值
有没有办法获得我上面显示的计数?谢谢
尝试这个:
先修复数据:
df1['city'] = df1['city'].str.replace('Franciso', 'Francisco')
Run Code Online (Sandbox Code Playgroud)
用这个:
(df1['city'].str.split(', ')
.explode()
.value_counts(sort=False)
.reindex(citylist, fill_value=0))
Run Code Online (Sandbox Code Playgroud)
输出:
New York 3
San Francisco 3
Los Angeles 4
Chicago 3
Miami 0
Name: city, dtype: int64
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |