我有以下数据框:
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
答案 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)新建一列,然后用这些列的值之间的差分隔