【发布时间】:2019-01-03 08:40:42
【问题描述】:
我有一个 DataFrame,其中包含一些列,例如“n”列和一些行,例如“m”行。我想根据一列(列:'x')值对 DataFrame 行进行分组,它与列'x'值不完全匹配。我需要对附近的值进行分组。例如我的 DataFrame 是这样的:
y yh x xw w Nxt
0 2987 3129 347 2092 1735.0 501
1 2715 2847 501 1725 1224.0 492
2 2419 2716 490 2196 1704.0 492
3 2310 2373 492 794 302.0 886
4 2309 2370 886 1012 126.0 492
5 2198 2261 497 791 299.0 886
6 2197 2258 886 1010 124.0 492
7 1663 2180 375 1092 600.0 1323
在上面的数据帧中,列“x”值之间的差异在 20 之间,那么我需要将它们分组到一个新的数据帧中,其余的可以避免。这里 index=1,2,3,5 行可以是一组,index=4,6 可以是另一组,因为这些行“x”列之间的差异在 20 之间。我的预期输出应该是三个数据帧-@ 987654322@:one 持有所有分组的行,df2:持有另一组行和 'df3': 其余行如下:
df1:
y yh x xw w Nxt
1 2715 2847 501 1725 1224.0 492
2 2419 2716 490 2196 1704.0 492
3 2310 2373 492 794 302.0 886
5 2198 2261 497 791 299.0 886
df2:
y yh x xw w Nxt
4 2309 2370 886 1012 126.0 492
6 2197 2258 886 1010 124.0 492
df3:
y yh x xw w Nxt
0 2987 3129 347 2092 1735.0 501
7 1663 2180 375 1092 600.0 1323
我尝试使用 Groupby-apply 和 groupby-transform,但未能成功。如果有人能帮助我得到这个预期的,那将是很大的帮助,在此先感谢。
【问题讨论】:
-
第4行和第7行的差值也小于20,这些行也要单独分组吗?
-
第 0 行和第 7 行的 x 列的值彼此相差 20 以内,所以它们应该在另一个数据框中吗?第 4 行和第 6 行一样吗?我的问题是真的,你是怎么决定
df1只包含 x 值在 500 左右的组? -
@user2699,是的,这些行也可以单独分组为另一个数据框,如 df3...
-
你怎么知道它们可以组合在一起的范围?
-
@Ben.T,是的,对于第 4 行和第 6 行,它应该是另一个数据框 df3... 对于第 0 行和第 7 行,我已经编辑了值,这是类型错误,抱歉。
标签: python python-3.x pandas dataframe pandas-groupby