pandas对每一行进行操作

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liukai6/article/details/89297380

pandas对一行或者多行进行获取

要获取某一行,你需要用 .loc[] 来按索引(标签名)引用这一行,或者用 .iloc[],按这行在表中的位置(行数)来引用。
同时你可以用 .loc[] 来指定具体的行列范围,并生成一个子数据表,就像在 NumPy里做的一样。比如,提取 ‘c’ 行中 'Name’ 列的内容

条件筛选

用中括号 [] 的方式,除了直接指定选中某些列外,还能接收一个条件语句,然后筛选出符合条件的行/列。比如,我们希望在下面这个表格中筛选出 ‘W’>0 的行:
你可以用逻辑运算符 &(与)和 |(或)来链接多个条件语句,以便一次应用多个筛选条件到当前的 DataFrame 上。举个栗子,你可以用下面的方法筛选出同时满足 ‘W’>0 和’X’>1 的行:

清洗数据

删除或填充空值

在许多情况下,如果你用 Pandas 来读取大量数据,往往会发现原始数据中会存在不完整的地方。在 DataFrame 中缺少数据的位置, Pandas 会自动填入一个空值,比如 NaN或 Null 。因此,我们可以选择用 .dropna() 来丢弃这些自动填充的值,或是用.fillna() 来自动给这些空值填充数据。

展开阅读全文

如何行列转换并对每一行合计

07-14

目标:需要对奖金项数不确定的结果集中计算每个单位的各项奖金及总奖金rn说明:rn奖金项表tb_item(奖金项ID,奖金项名称)rn奖金信息表tb(奖金项ID,得奖单位ID,奖金额)rn【奖金信息表】中的[奖金项ID]参照【奖金项表】中的[奖金项ID]rnrn目前我通过用pivot行列转换已实现了部分结果(参考辅助SQL),但不知道如何对每一行的结果进行总计,因为列数不确定。请教各位该如何修改或实现?先拜谢各位大虾了rnrn[code=SQL]rn--辅助SQL(包括数据初始化,可直接执行看结果更清晰)rnIF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]rnIF OBJECT_ID('[tb_item]') IS NOT NULL DROP TABLE [tb_item]rnrn--奖金项表rncreate table tb_item (itemid nvarchar(50),name nvarchar(50))rninsert into tb_itemrnselect '1','A奖金' union allrnselect '2','B奖金' union allrnselect '3','C奖金'rnrn--select * from tb_itemrn--奖金信息表rncreate table tb (itemid nvarchar(50),cid nvarchar(50),amount decimal)rninsert into tbrnselect '1','c1',50 union allrnselect '2','c1',30 union allrnselect '3','c1',20 union allrnselect '1','c2',25 union allrnselect '2','c2',10rnrn--select * from tbrnrndeclare @sql varchar(8000)rnselect @sql = isnull(@sql + ',' , '') + name from tb_item group by namernrnexec('rnselect * from (select x.cid,x.amount,i.name from tb xrninner join tb_item i on x.itemid=i.itemid) tb_r pivot (max(amount) for name in ('+@sql+')) t')rnrn--目前以上语句已经能实现以下结果rnselect 'c1' as cid,'50' as A奖金,'30' as B奖金,'20' as C奖金 union allrnselect 'c2','25','10',nullrnrnrn--需要达到的目标结果rnselect 'c1' as cid,'50' as A奖金,'30' as B奖金,'20' as C奖金,'100' as total union allrnselect 'c2','25','10','0','35' rn[/code]rnrnrn 论坛

没有更多推荐了,返回首页