如何在双重分组依据数据框中拆分数据?

xyhuang

我有一个大数据框,它有两个索引列-'date'和'con'

In [28]: df = pd.read_csv('~/futures_min_all.csv')

In [29]: df
Out[29]: 
            open   close    high     low     tvr    oi  vol  ticker      date     tme con
0         2854.0  2850.0  2854.0  2850.0  5696.0  1226    2  MA1506  20140618   93000  MA
1         2854.0  2854.0  2854.0  2854.0  5698.0  1228    2  MA1506  20140618   93100  MA
2         2854.0  2854.0  2854.0  2854.0     0.0  1228    0  MA1506  20140618   93200  MA
3         2854.0  2854.0  2854.0  2854.0     0.0  1228    0  MA1506  20140618   93300  MA
4         2854.0  2851.0  2854.0  2851.0  5698.0  1228    2  MA1506  20140618   93400  MA
...          ...     ...     ...     ...     ...   ...  ...     ...       ...     ...  ..
27277818  2359.0  2359.0  2359.0  2359.0     0.0     0    0  PM2105  20201223  145600  PM
27277819  2359.0  2359.0  2359.0  2359.0     0.0     0    0  PM2105  20201223  145700  PM
27277820  2359.0  2359.0  2359.0  2359.0     0.0     0    0  PM2105  20201223  145800  PM
27277821  2359.0  2359.0  2359.0  2359.0     0.0     0    0  PM2105  20201223  145900  PM
27277822  2359.0  2359.0  2359.0  2359.0     0.0     0    0  PM2105  20201223  150000  PM

对于每个骗局,日期范围都不同。

In [30]: df.groupby(['con']).apply(lambda x: set(x['date']))
Out[30]: 
con
A     {20160512, 20160513, 20160516, 20160517, 20160...
AG    {20160512, 20160513, 20160516, 20160517, 20160...
AL    {20160512, 20160513, 20160516, 20160517, 20160...
AP    {20181008, 20181009, 20181010, 20181011, 20181...
AU    {20160512, 20160513, 20160516, 20160517, 20160...
                            ...                        
WH    {20160512, 20160513, 20160516, 20160517, 20160...
WR    {20160512, 20160513, 20160516, 20160517, 20160...
Y     {20160512, 20160513, 20160516, 20160517, 20160...
ZC    {20160512, 20160513, 20160516, 20160517, 20160...
ZN    {20160512, 20160513, 20160516, 20160517, 20160...
Length: 68, dtype: object

我想将数据框分为两部分:

前70%,后30%

让我解释:

对于con =='IC','日期'范围为[20200101-20201230](约365天)

IC的前70%约为[20200101-20200820]

对于con =='NI',则'date'范围可能是[20200801-20201230]

在前70%中,“ NI”行将仅在[20200801-20201020]中保留“ date”

ps。我认为head(0.7 * len(df))方法可能无法解决这个问题。因为我想要set(date)的70%,而不是df的70%

我认为必须有一些优雅的方法可以将原始df分割成我想要的内容,您能帮上忙吗?

耶斯列尔

如果顺序pd.uniquesets来说不重要,则这里是前70%的唯一行的修改后的解决方案

f = lambda x: x.head(int(len(pd.unique(x['Date'])) * -.7))
df1 = df.groupby('con',group_keys=False).apply(f).reset_index(drop=True)

最后过滤所有不匹配的行:

df2 = df[~df.index.isin(df1.index)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

熊猫数据框中的MultiIndex分组依据

来自分类Dev

如何拆分数据框列并相应地复制行?

来自分类Dev

如何在R中每月拆分数据

来自分类Dev

拆分数据框中的每个单元格

来自分类Dev

如何透视数据框分组依据结果

来自分类Dev

如何通过重复索引拆分数据框并枚举?

来自分类Dev

我应该如何在Rmarkdown的数据框中打印分数?

来自分类Dev

如何在多索引数据框中划分数据

来自分类Dev

如何拆分数据框并将拆分的部分附加到新列中?

来自分类Dev

如何通过使用特定值对行进行分组来拆分数据框并创建子数据框?

来自分类Dev

SQL分组按拆分数据

来自分类Dev

如何根据特定列的特定文本拆分数据框

来自分类Dev

计算分组依据并融化数据框

来自分类Dev

根据列中的列表项拆分数据框

来自分类Dev

仅根据数据框中的分组依据数据绘制表?

来自分类Dev

如何在SQL中拆分数据

来自分类Dev

如何在使用Soap时在android中拆分数据

来自分类Dev

R按列中的新行拆分数据框

来自分类Dev

如何在R中每月拆分数据

来自分类Dev

如何拆分数组中的数据

来自分类Dev

如何在AngularJS中拆分数据?

来自分类Dev

如何在熊猫中按行拆分数据帧或重新排序数据帧

来自分类Dev

在 R 中的多列中拆分数据框

来自分类Dev

如何拆分数据框中的列并将每个值存储为新行(在熊猫中)?

来自分类Dev

如何根据列名拆分数据框列表?

来自分类Dev

如何在 Realm 中拆分数据库模式?

来自分类Dev

如何拆分数据框的列并对其进行整形?

来自分类Dev

如何在R中拆分数据帧

来自分类Dev

如何拆分数据框并绘制一些列