重采样后获取 pandas 第 n 个条目(在 'DatetimeIndexResampler' 对象上)
Get pandas nth entry after resampling ( on 'DatetimeIndexResampler' object)
我有这样一个数据框 df:
Data
Date
2013-01-01 1
2013-01-01 3
2013-01-01 0
2013-02-01 4
2013-02-01 0
它继续按月和值的其他后续日期。
我想在单独的子集中为一个月的每个组获取第 n 个元素。
我想使用月份重新采样并获得 nth
元素,就像我们可以获得 mean, min, max
...
第 n 个元素在 0 到 min 范围内
其中
min_to_keep = int(df.resample('M').count().min()[0])
除了 pandas#nth
方法不适合我,它适用于 Group
对象而不是 Resampler
。
想要的结果如下:
1 2013-01-01 1
2013-02-01 4
2 2013-01-01 3
2013-02-01 0
...
分组,然后使用 .nth
形成单独的 DataFrames
import pandas as pd
gp = df.groupby(pd.Grouper(freq='M'))
l = [gp.nth(i) for i in range(gp.size().max())]
# If need a DataFrame
pd.concat(l, keys=list(range(gp.size().max())))
Data
Date
0 2013-01-31 1
2013-02-28 4
1 2013-01-31 3
2013-02-28 0
2 2013-01-31 0
我有这样一个数据框 df:
Data
Date
2013-01-01 1
2013-01-01 3
2013-01-01 0
2013-02-01 4
2013-02-01 0
它继续按月和值的其他后续日期。 我想在单独的子集中为一个月的每个组获取第 n 个元素。
我想使用月份重新采样并获得 nth
元素,就像我们可以获得 mean, min, max
...
第 n 个元素在 0 到 min 范围内
其中
min_to_keep = int(df.resample('M').count().min()[0])
除了 pandas#nth
方法不适合我,它适用于 Group
对象而不是 Resampler
。
想要的结果如下:
1 2013-01-01 1
2013-02-01 4
2 2013-01-01 3
2013-02-01 0
...
分组,然后使用 .nth
DataFrames
import pandas as pd
gp = df.groupby(pd.Grouper(freq='M'))
l = [gp.nth(i) for i in range(gp.size().max())]
# If need a DataFrame
pd.concat(l, keys=list(range(gp.size().max())))
Data
Date
0 2013-01-31 1
2013-02-28 4
1 2013-01-31 3
2013-02-28 0
2 2013-01-31 0