如何使用熊猫根据列的值范围分离数据框?

Posted

技术标签:

【中文标题】如何使用熊猫根据列的值范围分离数据框?【英文标题】:How to separate a data frame based on a column's range of values with pandas? 【发布时间】:2022-01-23 23:00:54 【问题描述】:

这是一个有点奇怪的问题,但我一直在 python 中以 json 文件格式从 api 导入属性数据。然后我使用 Pandas 将 json 转换为数据框。

我在处理数据框中的数据时遇到问题。我当前的数据设置为像这张表一样格式化。

每个物业都被分配了一个名称和一个物业 ID 和地址,并且物业内的每个单元都有一个记录。理想情况下,我想创建多个由属性 id 分隔的数据框,使其看起来像这样。

我唯一的问题是,由于它们是一些组织问题,大约有 100 个不同的属性 ID,并且没有一个 ID 是按顺序排列的。它们都有一个从 1 到 1000 的随机数。

有没有办法通过结合使用某种唯一标识符和 for 循环来根据属性 id 自动分离数据帧?

我真的不知道如何处理这个场景。谢谢!

【问题讨论】:

你可以groupby属性ID,并从每个组中生成数据框吗? 【参考方案1】:

试试这个:

list_of_dataframes = [x for _, x in df.groupby(df['Property Id'].ne(df['Property Id'].shift(1)).cumsum())]

现在list_of_dataframeslist 的数据帧,其中每个数据帧包含Property Id连续相同的行。所以Property Ids 1 1 1 9 9 9 1 1 1 将返回 3 个数据帧,一个包含前三个 1,第二个包含接下来的三个 9,最后一个包含最后三个 1。

如果不希望组基于连续顺序(即,您希望 1 1 1 9 9 9 1 1 1 是两个数据帧,第一个包含所有六个 1,第二个包含三个 9),您可以这样做:

list_of_dataframes = [x for _, x in df.groupby(df['Property Id'])]

【讨论】:

我相信使用您提供的第二行代码对我有用。我感谢您的帮助。现在,最初,在创建数据框后,我使用了命令 output = df.to_csv('test.csv')。你知道我将如何为列表中的每个数据框创建一个 csv 文件吗? @pizzleberry 很抱歉给您带来不便,但请您提出一个新问题吗?你可以在这里链接

以上是关于如何使用熊猫根据列的值范围分离数据框?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据合并的数据框之一的两列的值在熊猫数据框中添加值

根据索引在熊猫数据框中查找特定列的值[重复]

如何根据另一列设置熊猫数据框背景颜色

熊猫根据其他列的值移动到对应列

根据两列的值选择熊猫数据框行

熊猫通过根据另一列的值添加列级别来重塑数据框[重复]