给定以下数据:
data = {'a' : [1,1,1,8,8,3,3,3,3,4,4] }
df = pd.DataFrame(data)
我现在想将整个东西向下移动n个组,以便保留它们当前的顺序。当向下移动n=1时,期望的输出应为:
desired_output = {'a': [NaN,NaN,NaN,1,1,8,8,8,8,3,3] }
desired_output_df = pd.DataFrame(desired_output)
n=2的移位应该是:
desired_output = {'a': [NaN,NaN,NaN,NaN,NaN,1,1,1,1,8,8] }
desired_output_df = pd.DataFrame(desired_output)
我一直在尝试使用groupby/transform/apply,但目前还没有得到任何有效的结果。如果我使用groupby然后进行shift操作,它会将每个组都进行移动,并输出以下结果:
NOT_desired_output = {'a' : [NaN, 1, 1, NaN, 8, NaN, 3,3,3, NaN, 4]}
我可以通过迭代来强制执行,但我相信有更好的解决方案。有什么想法吗?
(*x.values.T)
是通过列进行 NumPy 数组的元组解包(详见此答案)。它基本上使用列a
和b
来进行适当的查找/替换列表。 - Alex Riley