如何按熊猫中的值对系列进行分组?

Mar*_*man 49 python group-by series pandas

我目前有一个Series带有dtype 的pandas Timestamp,我想按日期对它进行分组(并且在每个组中有许多行具有不同的时间).

这种看似明显的方式与此类似

grouped = s.groupby(lambda x: x.date())
Run Code Online (Sandbox Code Playgroud)

但是,熊猫的groupby群体系列由其索引.我怎样才能使它按值分组?

luc*_*uca 73

grouped = s.groupby(s)
Run Code Online (Sandbox Code Playgroud)

要么:

grouped = s.groupby(lambda x: s[x])
Run Code Online (Sandbox Code Playgroud)

  • 是我,或者`s.groupby()`不起作用有点荒谬吗? (37认同)
  • 你说得对,Python 并不是为了在数据科学中进行 groupby 而发明的 XD (2认同)

小智 9

三种方法:

数据框: pd.groupby(['column']).size()

系列? sel.groupby(sel).size()

系列到数据帧:

pd.DataFrame( sel, columns=['column']).groupby(['column']).size()


And*_*nes 7

对于任何其他想要在不抛出lambda的情况下进行内联的人(这会降低性能):

s.to_frame(0).groupby(0)[0]
Run Code Online (Sandbox Code Playgroud)


mir*_*tle 3

您应该将其转换为 DataFrame,然后添加一个名为 date() 的列。您可以使用日期列对 DataFrame 进行 groupby。

df = pandas.DataFrame(s, columns=["datetime"])
df["date"] = df["datetime"].apply(lambda x: x.date())
df.groupby("date")
Run Code Online (Sandbox Code Playgroud)

然后“日期”就成为你的索引。您必须这样做,因为最终分组的对象需要一个索引,以便您可以执行诸如选择组之类的操作。