【发布时间】:2020-02-17 10:45:37
【问题描述】:
我有一个 df (df.shape = (14762, 35))。
Number Day Colour City ...
123 Monday Red London ...
234 Monday Blue Paris ...
234 Wednesday Yellow Paris ...
345 Tuesday Green Berlin ...
我正在尝试对 df 进行分组和聚合以生成
Number Day Colour City ...
123 Monday Red London ...
234 Monday, Wednesday Blue, Yellow Paris ...
345 Tuesday Green Berlin ...
我正在使用
df.groupby('Number').agg(lambda s: ', '.join({*s}))
但是,我的新 df 有一个形状 (5435, 22)。问题出在聚合步骤 lambda 函数中。 groupby 步骤工作正常。只是想知道为什么 .agg 或 .join 可能会删除某些列。我在 groupby 期间读过有关令人讨厌的专栏,但我认为这不是问题所在。
我已经打印了.dtypes,被删除的列是object、int64 和float64。
我正在使用 Python 3.6.9 和 pandas 0.25.3。
【问题讨论】:
-
什么版本的pandas,什么版本的python?此外,在原始数据框中 - 被删除的列的
dtype是什么? -
Python 3.6.9 和 Pandas 0.25.3。被删除的列是对象,float64s int64s。有些对象是 {} 大括号内的字典,因为文件是从 .json 读取的,但不是全部。
-
我希望
float64和int64被删除,因为join函数将引发TypeError。您可以通过将聚合函数更改为lambda x: ', '.join([str(i) for i in x])来解决此问题
标签: pandas join lambda group-by aggregate