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’列。我如何解决这个问题?
发布于 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
发布于 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”。你需要先处理你的数据。
https://stackoverflow.com/questions/55249055
复制相似问题