熊猫.agg()删除列(lambda函数)

时间:2020-02-17 10:45:37

标签: pandas join lambda group-by aggregate

我有一个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,要删除的列是objectint64float64

我正在使用Python 3.6.9和pandas 0.25.3。

1 个答案:

答案 0 :(得分:1)

我希望float64int64被删除,因为join函数将引发TypeError。您可能会遇到相同的问题,即也无法在其他join列上使用object

您可以通过将汇总功能更改为-

来解决此问题。

lambda x: ', '.join([str(i) for i in x])