首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python Pandas groupby删除列

Python Pandas groupby删除列
EN

Stack Overflow用户
提问于 2019-03-20 03:55:00
回答 2查看 330关注 0票数 0
data_c["dropoff_district"] = "default value"      
data_c["distance"] = "default value"      #Formed a new column named distance for geocoder
data_c["time_of_day"] = "default value"      #Formed a new column named time of the day for timestamps

因此,我在项目开始时创建了这些列,用于绘图和我编辑的数据分组,并使用某些值填充这些列,我想在data_c上执行manipulaton.After操作。

avg_d = data_c.groupby(by = 'distance').sum().reset_index()

虽然当我在data_c上执行groupby时,我不知何故丢失了avg_d中的'time_of_day‘和'dropoff_district’列。我如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-20 04:08:12

问题是Pandas不知道如何将date/time对象加在一起。因此,当您告诉Pandas使用groupby,然后使用sum时,它会抛出不知道如何处理的列。例如,

df = pd.DataFrame([['2019-01-01', 2, 3], ['2019-02-02', 2, 4], ['2019-02-03', 3, 5]], 
             columns=['day', 'distance', 'duration'])
df.day = pd.to_datetime(df.day)

如果我只运行你的查询,我会得到,

>>> df.groupby('distance').sum()
          duration
distance          
2                7
3                5

你可以通过告诉Pandas你想对这些列做一些不同的事情来解决这个问题-例如,取第一个值,

df.groupby('distance').agg({
    'duration': 'sum',
    'day': 'first'
})

把他们带回来了,

          duration        day
distance                     
2                7 2019-01-01
3                5 2019-02-03
票数 2
EN

Stack Overflow用户

发布于 2019-03-20 04:05:04

Groupby不会删除您的列。sum()调用会这样做。如果这些列不是数字,则在sum()之后不会保留它们。

那么,您喜欢如何保留列'time_of_day‘和’dropoff_ columns‘呢?假设您仍然想在它们不同的时候保留它们,将它们放入groupby

data_c.groupby(['distance','time_of_day','dropoff_district']).sum().reset_index()

否则,对于相同的“time_of_day”,您将有多个不同的“distance”。你需要先处理你的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55249055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档