Python pandas 数据帧分割

标签 python pandas dataframe

我有这种类型的数据帧,我想将其拆分为单独的数据帧:

A B C Mark
3 5 6 T
4 5 2 T
3 4 5 B
5 6 7 B
3 4 5 T
2 5 2 T

例如,上表应分为三个 pandas 数据帧。第一个数据帧将带有标记“T”的两行作为一个数据帧,第二个数据帧将带有标记“B”的接下来两行作为一个数据帧,第三个数据帧将带有标记“T”的最后两行作为一个数据帧。

df1

A B C Mark
3 5 6 T
4 5 2 T

df2

 A B C Mark
   3 4 5 B
   5 6 7 B

df3

A B C Mark
3 4 5 T
2 5 2 T

最佳答案

创建一个字典如下:

frames = {}
for i, grp in df.groupby(df.Mark.ne(df.Mark.shift()).cumsum()):
    frames.update([('df_'+str(i),grp)])

{'df_1':    A  B  C Mark
 0  3  5  6    T
 1  4  5  2    T, 'df_2':    A  B  C Mark
 2  3  4  5    B
 3  5  6  7    B, 'df_3':    A  B  C Mark
 4  3  4  5    T
 5  2  5  2    T}

然后您可以通过将所有 dfs 打印为进行测试:

print(frames['df_1'])

   A  B  C Mark
0  3  5  6    T
1  4  5  2    T

关于Python pandas 数据帧分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54689555/

相关文章:

python - 使用 2 个数据框列作为参数应用函数

python - Pandas 数据框计数行值

python - 如何在主窗口中插入表单

python - 增加字符串中的字符

python - Pandas pytables 追加 : performance and increase in file size

r - 确定 R data.frame 列中值的变化位置

Python - 如何根据 DF 和其中的数据制作 SQL "Create Table"语句?

python - python 中的对数正态分布

python:二次相关

python - 如何根据多种条件在pandas中创建新列并通过分组来计算以前的成本和累计成本?