根据值拆分 Pandas 数据框列

ays*_*duz 5 python numpy pandas

我搜索了,我找不到像我这样的问题。因此,如果有,但不知何故我找不到,请告诉我。所以我可以删除这个帖子。

我遇到了一个问题,无法按值将 Pandas 数据帧拆分为不同的数据帧 (df)。

我在文本文件中有一个数据集,我将它们存储为pandas dataframe只有一列。数据集中有不止一组信息,并且某个值定义了该组的结尾,您可以在下面看到一个示例:

样本输入

In [8]: df
Out[8]: 
  var1
0    a
1    b
2    c
3    d
4    endValue
5    h
6    f
7    b
8    w
9    endValue
Run Code Online (Sandbox Code Playgroud)

所以我想把这个 df 拆分成不同的数据帧。我找不到办法做到这一点,但我相信一定有一个简单的方法。我在示例输出中显示的格式可能是错误的格式。所以,如果你有更好的主意,我很乐意看到。谢谢你的帮助。

我想要的示例输出

  var1
{[0    a
1    b
2    c
3    d
4    endValue]},
{[0    h
1    f
2    b
3    w
4    endValue]}

Run Code Online (Sandbox Code Playgroud)

yat*_*atu 3

您可以检查 的位置var1endValue获取cumsum,并将结果用作自定义石斑鱼。然后Groupby根据结果构建一个字典:

d = dict(tuple(df.groupby(df.var1.eq('endValue').cumsum().shift(fill_value=0.))))
Run Code Online (Sandbox Code Playgroud)

或者对于数据帧列表(以相同的方式有效索引):

l = [v for _,v in df.groupby(df.var1.eq('endValue').cumsum().shift(fill_value=0.))]
Run Code Online (Sandbox Code Playgroud)
print(l[0])

       var1
0         a
1         b
2         c
3         d
4  endValue
Run Code Online (Sandbox Code Playgroud)