我想根据列值从更大的数据框中创建数据框列表。 "ID"
列可以重复,例如1,2,3,1,2,3,4,5,1,2
。
我想通过提取行直到ID再次重复回到1来创建数据帧列表。在这种情况下,列表应该包含ID为1,2,3
,1,2,3,4,5
的3个数据然后1,2
。
可以不使用for循环来完成此操作吗?
答案 0 :(得分:4)
不需要循环。
>>> list(zip(*df.groupby(df.ID.diff().ne(1).cumsum())))[1]
答案 1 :(得分:0)
这是@RenderPage("~/Views/Shared/_Container.cshtml");
:numpy
中的常见习语。
您可以利用此功能和np.where(np.diff(s) != 1)
完成所需的操作:
np.split
s = df.ID.values
idx, *_ = np.where(np.diff(s) != 1)
np.split(s, idx + 1)