从熊猫数据框中提取数据

时间:2018-10-19 18:20:19

标签: python-3.x pandas pandas-groupby

我想根据列值从更大的数据框中创建数据框列表。 "ID"列可以重复,例如1,2,3,1,2,3,4,5,1,2

我想通过提取行直到ID再次重复回到1来创建数据帧列表。在这种情况下,列表应该包含ID为1,2,31,2,3,4,5的3个数据然后1,2

可以不使用for循环来完成此操作吗?

2 个答案:

答案 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)