根据单元格字符串分割数据帧

时间:2020-10-15 17:25:22

标签: python pandas

我有一个带有颜色列的数据框,其中包含字符串“ Red”或“ Blue”。每当“颜色”列等于“蓝色”时是否可以拆分数据帧。请在下面找到示例数据帧和所需的输出。 DF是初始数据帧。 Res1,Res2,Res3是我想要的。预先感谢。

df:

     Colour
 0    Red
 1    Red
 2    Red
 3    Blue
 4    Red
 5    Blue
 6    Red
 7    Red
 8    Red
 9    Red
 10   Blue

res1:

    Colour
 0    Red
 1    Red
 2    Red
 3    Blue

res2:

    Colour
 0    Red
 1    Blue

res3:

   Colour
 0    Red
 1    Red
 2    Red
 3    Red
 4   Blue

2 个答案:

答案 0 :(得分:1)

我们可以尝试cumsum颠倒顺序

s = df.Colour.eq('Blue').iloc[::-1].cumsum()
d = dict(tuple(df.groupby(s)))
d[1]
Out[89]: 
   Colour
6     Red
7     Red
8     Red
9     Red
10   Blue

答案 1 :(得分:1)

我们可以在groupby()上进行cumsum。由于您希望标记Blue结尾,因此我们需要进行移位:

for i, d in df.groupby(df['Colour'].shift().eq('Blue').cumsum()):
    print(d)

最好使用字典将其存储在数据结构中:

d = {k:d for k,d in df.groupby(df['Colour'].shift().eq('Blue').cumsum())}

d[0]给出:

  Colour
0    Red
1    Red
2    Red
3   Blue