SerializationProvider
因此,我在项目开始时创建了这些列以进行绘图和数据操作。在我对这些列进行了编辑并填充了某些值之后,我想对data_c执行groupby操作。
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上执行分组时,我还是会丢失avg_d中的“ time_of_day”和“ dropoff_district”列。我该如何解决这个问题?
答案 0 :(得分:1)
问题是熊猫不知道如何将日期/时间对象一起添加。因此,当您告诉Pandas进行groupby然后求和时,它将抛出不知道该怎么做的列。例子
<svg width="600" height="150" font-family="monospace" xml:space="preserve">
<defs>
<style type="text/css">
<![CDATA[ /* ADD CLASSES */
.font{text-anchor: start; font-size: 12px;font-weight: normal; font-family: "DejaVu Sans Mono", sans-serif;white-space: pre-wrap;}
]]>
</style>
</defs>
如果我只是运行您的查询,我会得到的,
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
将他们带回来
df.groupby('distance').agg({
'duration': 'sum',
'day': 'first'
})
答案 1 :(得分:0)
Groupby不会删除您的列。 sum()
调用可以。如果这些列不是数字列,则您将不会在sum()
之后保留它们。
那么您想如何保留“ time_of_day”和“ dropoff_district”列?假设您仍然希望保留它们的区别性,将它们放入groupby
:
data_c.groupby(['distance','time_of_day','dropoff_district']).sum().reset_index()
否则,对于相同的“距离”,您将有多个不同的“ time_of_day”。您需要先整理数据。