python - 在 Pandas 中将数据帧子集为多个数据帧

标签 python list pandas dataframe

我有一个 Pandas 数据框,有 51034 行和 10 列。我想根据包含要切片的行的列表将此数据帧分割成 158 个较小的数据帧。

如何将 pandas 数据帧分割成更小的数据帧?

例如,如果我有一个 10 行 4 列的数据框:

      A    B    C    D
0     1    2    3    4
1     5    6    7    8
2     9    10   11   12
3     13   14   15   16
4     17   18   19   20
5     21   22   23   24
6     25   26   27   28
7     29   30   31   32
8     33   34   35   36
9     37   38   39   40

此示例数据框将每 2 行进行切片,以创建 5 个新的较小数据框:

DataFrame1:

      A    B    C    D
0     1    2    3    4
1     5    6    7    8

DataFrame2:

      A    B    C    D
0     9    10   11   12
1     13   14   15   16

DataFrame3:

      A    B    C    D
0     17   18   19   20
1     21   22   23   24

DataFrame4:

      A    B    C    D
0     25   26   27   28
1     29   30   31   32

DataFrame5:

      A    B    C    D
0     33   34   35   36
1     37   38   39   40

我不确定如何使用较大数据帧的切片来创建较小的数据帧。

关于如何实现这一目标有什么建议吗?

谢谢。

罗德里戈

最佳答案

您可以使用groupby使用简单的索引到组映射函数,假设索引是连续的并且从0开始:

for _, df_k in df.groupby(lambda x: x/2):
    print df_k.reset_index(drop=True)

输出:

   A  B  C  D
0  1  2  3  4
1  5  6  7  8
    A   B   C   D
0   9  10  11  12
1  13  14  15  16
    A   B   C   D
0  17  18  19  20
1  21  22  23  24
    A   B   C   D
0  25  26  27  28
1  29  30  31  32
    A   B   C   D
0  33  34  35  36
1  37  38  39  40

如果您有一个指示切片位置的数字列表,则可以传入字典作为组映射:

import numpy as np
slice_at = [3, 5]
group_sizes = np.diff([0] + slice_at + [len(df)])
mapping = dict(zip(df.index, np.repeat(range(len(group_sizes)), group_sizes)))
for _, df_k in df.groupby(mapping):
    print df_k.reset_index(drop=True)

输出:

   A   B   C   D
0  1   2   3   4
1  5   6   7   8
2  9  10  11  12
    A   B   C   D
0  13  14  15  16
1  17  18  19  20
    A   B   C   D
0  21  22  23  24
1  25  26  27  28
2  29  30  31  32
3  33  34  35  36
4  37  38  39  40

关于python - 在 Pandas 中将数据帧子集为多个数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30205628/

相关文章:

python - GAE 网络应用程序 : the cost of importing a bunch of request handlers

python - 在 Python 中连接 CSV 文件中具有相同第一列值的所有行

python - (Python) 元组/列表赋值

python - 从 CSV 文件中读取特定字段

Python ctypes : how to pass row outputs from a C function into a pandas DataFrame?

python - Sympy 找不到简单项之和的拉普拉斯逆变换

python - 根据每个列类型获取数据框的均值和模式

python - 尝试比较列表元素

python - 如何更改此代码以检查输入单词是否与另一个单词(填字游戏)相交?

python - Pandas 组和总值