Pandas 按唯一列值拆分数据框

Posted

技术标签:

【中文标题】Pandas 按唯一列值拆分数据框【英文标题】:Pandas Split Dataframe by Unique Column Value 【发布时间】:2020-10-01 11:27:36 【问题描述】:

我有一个正在输出到名为“所有数据”的电子表格的数据框。假设此数据包含一个企业地址(街道、城市、邮编、州的列)。但是,我还想为每个包含完全相同列的唯一状态创建一个工作表。

我的基本想法是使用df.iterrows() 遍历每一行,然后通过将数据框附加到新数据框来划分数据框,但这似乎效率极低。有没有更好的方法来做到这一点?

我找到了this answer,但这只是一个布尔索引。

【问题讨论】:

你试过groupby()吗?? 【参考方案1】:

一种简单的方法是获取唯一状态,然后将它们过滤掉并将它们保存为单独的 CSV 或在之后执行任何其他操作

这是一个例子:

# df[column].unique() returns a list of unique values in that particular column
for state in df['state'].unique():
    # Filter the dataframe using that column and value from the list
    df[df['state']==state].to_csv()

【讨论】:

【参考方案2】:

其他问题的 groupby 答案也适用于您。在您的情况下,类似于:

df_list = [d for _, d in df.groupby(['state'])]

这使用列表推导返回一个数据框列表,每个状态都有一个数据框。

【讨论】:

以上是关于Pandas 按唯一列值拆分数据框的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 数据框:如何按多值列将一行拆分为多行? [复制]

根据唯一ID将pandas数据框划分为测试和训练

Pandas Dataframe Multiindex 按级别和列值排序

根据 Pandas 中的公共列值合并两个数据框

计算由另一列值分组的列值在 pandas 数据框中的共现

如何在 Pandas 数据框中按列值分组