根据值范围将数据框拆分为较小的数据框

时间:2019-04-05 13:33:39

标签: python pandas

我有以下数据框:

     x     text     
1    500   aa
2    550   bb
3    700   cc
4    750   dd 

我的目标是,如果x值相距100点以上,请分割此df。

是否有熊猫函数可让您根据值的范围进行拆分?

这是我想要的输出:

df_1:

    x     text  
0   500   aa
1   550   bb

df_2:

    x     text  
0   700   cc
1   750   dd

2 个答案:

答案 0 :(得分:1)

我相信您需要通过助手Series将groupby对象转换为元组和字典:

d = dict(tuple(df.groupby(df['x'].diff().gt(100).cumsum())))
print (d)
{0:      x text
1  500   aa
2  550   bb, 1:      x text
3  700   cc
4  750   dd}

详细信息

首先通过Series.diff得到差异,通过Series.gt进行比较以获得更大的结果,然后通过Series.cumsum创建连续的组:

print (df['x'].diff().gt(100).cumsum())
1    0
2    0
3    1
4    1
Name: x, dtype: int32

答案 1 :(得分:0)

使用shift(1)新建一列,然后用这些列的值之间的差分隔