python - 如何根据列值的范围将单个数据帧拆分为多个数据帧?

标签 python python-3.x pandas

首先,我意识到这个问题已经以多种不同的形式被问了很多次,但很多答案只是给出了解决问题的代码,而没有解释代码的实际用途或工作原理。

我有一个巨大的电话号码和区号数据集,我已将它们加载到 python 中的数据框中进行一些处理。在进行该处理之前,我需要将单个数据帧拆分为多个数据帧,其中包含特定区号范围内的电话号码,然后我可以对其进行更多处理。例如:

+---+--------------+-----------+
|   | phone_number | area_code |
+---+--------------+-----------+
| 1 | 5501231234   | 550       |
+---+--------------+-----------+
| 2 | 5051231234   | 505       |
+---+--------------+-----------+
| 3 | 5001231234   | 500       |
+---+--------------+-----------+
| 4 | 6201231234   | 620       |
+---+--------------+-----------+

进入

area-codes (500-550)
+---+--------------+-----------+
|   | phone_number | area_code |
+---+--------------+-----------+
| 1 | 5501231234   | 550       |
+---+--------------+-----------+
| 2 | 5051231234   | 505       |
+---+--------------+-----------+
| 3 | 5001231234   | 500       |
+---+--------------+-----------+

area-codes (600-650)
+---+--------------+-----------+
|   | phone_number | area_code |
+---+--------------+-----------+
| 1 | 6201231234   | 620       |
+---+--------------+-----------+

我知道这应该可以使用 pandas (特别是我认为的 groupby 和 Series 对象)来实现,但是我可以找到的互联网上的文档和示例对于我来说有点太模糊或稀疏,无法遵循。也许有比我尝试的更好的方法来做到这一点?

最佳答案

您可以使用pd.cut bin area 列,然后使用标签对数据进行分组并存储在字典中。最后打印每个键以查看数据帧:

bins=[500,550,600,650]
labels=['500-550','550-600','600-650']
<小时/>
d={f'area_code_{i}':g for i,g in 
  df.groupby(pd.cut(df.area_code,bins,include_lowest=True,labels=labels))}

print(d['area_code_500-550'])
print('\n')
print(d['area_code_600-650'])
<小时/>
    phone_number  area_code
0    5501231234        550
1    5051231234        505
2    5001231234        500


   phone_number  area_code
3    6201231234        620

关于python - 如何根据列值的范围将单个数据帧拆分为多个数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57658802/

相关文章:

python - 在 Django 模板中循环 DefaultDict 时出现奇怪的运行时错误

python - 创建 word2vec 模型 syn1neg.npy 扩展

Python:什么时候 0.0/0.0 =NaN 或 inf ,什么时候会给出异常?

python - Django - 在 DetailView 中过滤

python - 获取 Python 类中的变量类型

python - 为什么 __dir__() 不适用于 python 中的模块?

python - 如何在python变量中存储aws组织单元ID和scp策略ID?

python - 将数字转换为 pandas DataFrame 中的特定字符串格式

python - Pandas 滚动窗口,带有过滤条件,删除一些最新数据

python - 如何使用颜色图为 Pandas DataFrames 的绘图着色