首页 > 解决方案 > 如何以迭代方式根据列中的特定值对数据框进行切片并创建新的数据框?

问题描述

我有一个熊猫数据框,我想迭代这个数据框的行,根据列中的值获取数据切片。

简而言之,我有一个如下所示的数据框:

districts = [['dist','name','sale','purchase'],['dis1','avelin',2300, 1400],['dis2','matri', 4300, 2500], ['dis1', 'texi', 1500, 1700],['dis2','timi', 2300, 1400]]

我想遍历所有行并根据“dist”列提取数据帧。
输出应如下所示:

dis1 = [[2300, 1400], [1500,1700]]
dis2 = [[4300,2500],[2300,1400]]  

标签: python-3.xpandas

解决方案


作为前言,您并没有真正使用 pandas,因为您目前已经设置了代码。您有一个列表列表,但它不是熊猫数据框。要实际使用 pandas:

districts = [['dis1','avelin',2300, 1400],
             ['dis2','matri', 4300, 2500],
             ['dis1', 'texi', 1500, 1700],
             ['dis2','timi', 2300, 1400]]
df = pd.DataFrame(data=districts, columns=['dist','name','sale','purchase'])

从那里开始,对数据帧进行子集化的过程很容易——不需要“迭代”(使用 pandas 时很少需要):

dis1 = df.loc[df['dist'] == 'dis1']
dis2 = df.loc[df['dist'] == 'dis2']

这给出了结果:

   dist    name  sale  purchase
0  dis1  avelin  2300      1400
2  dis1    texi  1500      1700

   dist   name  sale  purchase
1  dis2  matri  4300      2500
3  dis2   timi  2300      1400

如果您还没有,您应该阅读 pandas 帮助页面——例如,入门索引和选择数据页面。


推荐阅读