首页 >后端开发 >Python教程 >如何根据列的唯一值将 Pandas DataFrame 拆分为多个 DataFrame?

如何根据列的唯一值将 Pandas DataFrame 拆分为多个 DataFrame?

Susan Sarandon
Susan Sarandon原创
2024-12-12 15:29:11784浏览

How to Split a Pandas DataFrame into Multiple DataFrames Based on a Column's Unique Values?

使用 Groupby 根据列值拆分 Pandas DataFrame

本文提出了一种解决方案,解决将 DataFrame 拆分为多个部分的挑战特定列中的唯一值。

考虑以下内容DataFrame:

import pandas as pd

df = pd.DataFrame({
    "N0_YLDF": [6.286333, 6.317000, 6.324889, 6.320667, 6.325556, 6.359000, 6.359000, 6.361111, 6.360778, 6.361111],
    "ZZ": [2, 6, 6, 5, 5, 6, 6, 7, 7, 6],
    "MAT": [11.669069, 11.669069, 11.516454, 11.516454, 11.516454, 11.516454, 11.516454, 11.516454, 11.516454, 11.516454]
})

目标是创建一个新的 DataFrame,其中包含“N0_YLDF”列的多个列,每列对应于“ZZ”列中的唯一值。为了实现这一点,我们可以利用 groupby() 函数。

grouped_df = df.groupby("ZZ")

groupby() 函数创建一个 pandas.core.groupby.groupby.DataFrameGroupBy 对象,它表示根据分组划分的 DataFrame指定列中的值。在本例中,我们有四个组:

print(grouped_df.groups)

# Output
{2: [0], 6: [1, 2, 5, 6, 9], 5: [3, 4], 7: [7, 8]}

要获取每个组的单独 DataFrame,我们可以使用列表理解:

split_dfs = [grouped_df.get_group(key) for key in grouped_df.groups]

get_group() 方法返回一个 DataFrame包含属于指定组的行。

生成的 split_dfs 列表包含四个 DataFrame,每个 DataFrame 代表不同的值

例如,要访问“ZZ”值为 6 的组的 DataFrame,您可以使用:

split_df_6 = split_dfs[1]

这将为您提供一个 DataFrame包含以下几行:

   N0_YLDF   ZZ        MAT
1  6.317000   6  11.669069
2  6.324889   6  11.516454
5  6.359000   6  11.516454
6  6.359000   6  11.516454
9  6.361111   6  11.516454

通过利用 groupby() 函数和 get_group() 方法,您可以有效地将 DataFrame 拆分为基于指定列中的值的多个部分。

以上是如何根据列的唯一值将 Pandas DataFrame 拆分为多个 DataFrame?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn