使用 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中文网其他相关文章!