我现在有一个 pandas 的 Series
,其中包含 Timestamp
的数据类型,并且我想按日期对其进行分组(每个组中有许多具有不同时间的行)。
看起来很明显的方法是类似于以下方式:
grouped = s.groupby(lambda x: x.date())
不过,pandas的groupby
按索引对Series进行分组。我该如何使其按值进行分组?
grouped = s.groupby(s)
或者:grouped = s.groupby(lambda x: s[x])
s.groupby()
不能用有点荒谬? - BallpointBents.cumsum().groupby(ts.cumsum()).count()
,最好使用链式方法,否则需要多次计算而没有变量。 - Mithril三种方法:
DataFrame: pd.groupby(['column']).size()
Series: sel.groupby(sel).size()
Series 转 DataFrame:
pd.DataFrame(sel, columns=['column']).groupby(['column']).size()
sel
是什么? - undefinedSeries
对象的名称。 - undefined如果有其他人想要在不使用lambda表达式的情况下进行内联操作(这往往会影响性能):
s.to_frame(0).groupby(0)[0]
您应该将其转换为DataFrame,然后添加一个列作为date()。可以在带有日期列的DataFrame上进行groupby。
df = pandas.DataFrame(s, columns=["datetime"])
df["date"] = df["datetime"].apply(lambda x: x.date())
df.groupby("date")
那么 "date" 就变成了你的索引。你必须这样做,因为最终分组对象需要一个索引,以便您可以执行像选择一组之类的操作。
pd.Series(index=s.values).groupby(level=0)
pd.Series(s.values).groupby(level=0)
,那么你就是正确的。 - mchl_k
grouped = s.groupby(s.dt.date)
不起作用吗?你想实现什么? - EdChum