找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1617|回复: 2

[求助] 困扰整天,求教!要求dataframe>3的行?如何实现?

1

主题

1

帖子

1

积分

贫民

积分
1
sunny_EF2Z3 发表于 2018-12-15 00:23:19 | 显示全部楼层 |阅读模式
今天一个问题困扰问一天,
其实是个小问题,
谁让是菜鸟呢。
直接上问题
#############################################
要求:dataframe中所有元素>3的行索引,怎么实现。
譬如:
(1)有这样一个df
col_list = ['2018','2017','2016','2015','2014']
df = pd.DataFrame([[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7],[4,5,6,7,8],[5,6,7,8,9],[6,7,8,9,10]],columns=col_list)
即:df= 2018 2017 2016 2015 2014
0    1 2 3 4 5
1    2 3 4 5 6
2    3 4 5 6 7
3    4 5 6 7 8
4    5 6 7 8 9
5    6 7 8 9 10
(2)现在要求满足df>3的行索引,怎么实现?
最好用循坏和迭代实现,有更好的通用性。
########################################################
目前我想到的方法是:
一、df[df>3],但是返回同样尺寸的df,程序无法抽取有效的行索引,返还结果如下:
2018 2017 2016 2015 2014
0 NaN NaN NaN 4 5
1 NaN NaN 4.0 5 6
2 NaN 4.0 5.0 6 7
3 4.0 5.0 6.0 7 8
4 5.0 6.0 7.0 8 9
5 6.0 7.0 8.0 9 10
关键是怎么删掉含有NaN的列,像df.drop['2018']这种显然不行,不能迭代处理
二、用笨办法,如df[(df['2018']>3) & (df['2017']>3) & (df['2016']>3) & (df['2015']>3) & (df['2014']>3)],结果是能出来,但也是上面那问题,程序不能迭代处理,写出的代码不具有通用性
2018 2017 2016 2015 2014
2 3 4 5 6 7
3 4 5 6 7 8
4 5 6 7 8 9
5 6 7 8 9 10

回复

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2018-12-17 22:09:58 | 显示全部楼层
不知道对不对

Screenshot from 2018-12-17 22-09-09.png
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2018-12-17 22:19:43 | 显示全部楼层
如果只要索引号
df[(df>3).all(axis=1)].index.tolist()
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表