python-3.x - 如何以迭代方式根据列中的特定值对数据框进行切片并创建新的数据框?
问题描述
我有一个熊猫数据框,我想迭代这个数据框的行,根据列中的值获取数据切片。
简而言之,我有一个如下所示的数据框:
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]]
解决方案
作为前言,您并没有真正使用 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
推荐阅读
- c# - 如何在桶聚合中进行过滤聚合?
- reactjs - 反应应用程序中的npm错误cb()是什么意思
- c++ - std::string 的大小总是打印字符的数量吗?
- angular - 如何在 anuglar 中使用 mailTo 在正文中创建带有 json 的邮件
- python-3.x - 如何通过在文本块外部单击来从文本块中移除焦点
- sql - SQL Server 中 MIN/MAX 的更快替代方案
- python - 如何使用 python 获取桌面音频?
- python-3.x - Python3以阻塞模式读取字符设备
- azure - Xamarin Forms UWP Azure B2C IdentityProvider 登录失败
- julia - 在 Julia 中导入 CSV 文件:ArgumentError:提供一个有效的接收器参数,例如 `using DataFrames; CSV.read(源,数据帧)`