今天一个问题困扰问一天,
其实是个小问题,
谁让是菜鸟呢。
直接上问题 ############################################# 要求: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
|