python - 熊猫分组但保留另一列
问题描述
假设我有一个看起来像这样的数据框
date location year
0 1908-09-17 Fort Myer, Virginia 1908
1 1909-09-07 Juvisy-sur-Orge, France 1909
2 1912-07-12 Atlantic City, New Jersey 1912
3 1913-08-06 Victoria, British Columbia, Canada 1912
我想使用 pandas groupby 函数创建一个输出,该输出显示按年份显示的事件总数,但还保留将显示当年位置之一的位置列。任何一个工作。所以它看起来像这样:
total location
year
1908 1 Fort Myer, Virginia
1909 1 Juvisy-sur-Orge, France
1912 2 Atlantic City, New Jersey
这可以在不进行时髦加入的情况下完成吗?我能得到的最远的是使用普通的 groupby
df = df.groupby(['year']).count()
但这只会给我这样的东西
location
year
1908 1 1
1909 1 1
1912 2 2
如何显示此数据框中的位置之一?
解决方案
您可以使用groupby.agg
和'first'
提取每个组中的第一个位置:
res = df.groupby('year')['location'].agg(['first', 'count'])
print(res)
# first count
# year
# 1908 Fort Myer, Virginia 1
# 1909 Juvisy-sur-Orge, France 1
# 1912 Atlantic City, New Jersey 2
推荐阅读
- python - 如何为神经网络编写类以便能够访问 Tensorflow 中的层
- c++ - 了解使用 C++ 赋值时的运算符“更少”或“更大”
- mapdeck - 有人让 mapdeck 使用 OSGB 矢量图块吗?
- javascript - 在 Chartjs 中隐藏特定的 x 轴**标签**
- excel - 如何将表格放置在使用 VBA 发送的邮件正文中的特定位置?
- flutter - Flutter:同一类的多个 StreamProviders
- c++ - 是否可以使用 std::char_traits
在 GCC 8 之前的常量表达式中? - html - 如何在渐变属性中提供超过 3 种颜色,以使 2 种在 50% 中混合良好,1 种在 50% 中显示?
- php - Google Sheets API 在行位置插入行
- javascript - 列表上的选择会影响以下重复列表