pandas - groupby 基于一列并获取另一列中的总和值
问题描述
我有一个这样的数据框
mode travel time
transit_walk 284.0
transit_walk 284.0
pt 270.0
transit_walk 346.0
walk 455.0
我想按“模式”分组并获得所有旅行时间的总和。所以我想要的结果看起来像:
mode total travel time
transit_ walk 1200000000
pt 30000000
walk 88888888
我已经编写了代码,例如
df.groupby('mode')['travel time'].sum()
但是,我的结果如下:
mode
pt 270.01488.01518.01788.01300.01589.01021.01684....
transit_walk 284.0284.0346.0142.0142.01882.0154.0154.0336.0...
walk 455.018.0281.0554.0256.0256.0244.0244.0244.045...
Name: travel time, dtype: object
这只是将所有时间并排放置,并没有总结它们。
解决方案
column 中有字符串travel time
,所以尝试使用Series.astype
:
df['travel time'] = df['travel time'].astype(float)
如果由于某些非数值而失败,请使用to_numeric
with errors='coerce'
:
df['travel time'] = pd.to_numeric(df['travel time'], errors='coerce')
最后一个聚合:
df1 = df.groupby('mode', as_index=False)['travel time'].sum()
推荐阅读
- javascript - 如何确定某个字符串是否在列表中
- node.js - Multer: upload different file types in different folders
- python - pandas:有条件地聚合连续行
- java - Spring Boot 中重定向 URL 的白名单
- html - Emmet 缩写从现有的 url
- c++ - 是否可以选择不自动将所有前导下划线 _ 导出为 emscripten 中的函数?
- python - Python 2.7 - 比较字典时仅显示修改后的字典键/值
- amazon-web-services - 指向不同服务器(亚马逊网络服务)的子域的 SSL 证书 - 设置
- css - Firefox-CSS:伪元素“之前”的边界半径问题
- django - 在 django 中使用 pika 的 Rabbitmq 监听器