pandas列是否为空_如何获取pandas DataFrame的第一个索引,其中几个未定义的列不为空?...

该博客介绍了如何在pandas DataFrame中查找第一行,该行的特定列(如'A')非空且至少有n个其他列的值非空。通过一个名为`numpy_approach`的函数,可以根据给定的列名和n值来找到满足条件的行的索引。函数使用numpy数组操作和条件检查来实现这一目标。
摘要由CSDN通过智能技术生成

我有一个包含多个列的数据框.我想得到第一行索引:

>列A的值不为空

>至少存在n个其他值,其值不为null

示例:如果我的数据框是:

Date A B C D

0 2015-01-02 NaN 1 1 NaN

1 2015-01-02 NaN 2 2 NaN

2 2015-01-02 NaN 3 3 NaN

3 2015-01-02 1 NaN 4 NaN

5 2015-01-02 NaN 2 NaN NaN

6 2015-01-03 1 NaN 6 NaN

7 2015-01-03 1 1 6 NaN

8 2015-01-03 1 1 6 8

如果n = 1,我会得到3

如果n = 2,我会得到7

如果n = 3,我会得到8

这里有一种方法可以一次性获得不同n的指数 –

def numpy_approach(df, reference='A'):

df0 = df.iloc[:,df.columns != 'Date']

valid_mask = df0.columns != reference

mask = ~np.isnan(df0.values)

count = mask[:,valid_mask].sum(1) * mask[:,(~valid_mask).argmax()]

idx0 = np.searchsorted(np.maximum.accumulate(count),[1,2,3])

return df.index[idx0]

样品运行 –

In [555]: df

Out[555]:

Date A B C D

0 2015-01-02 NaN 1.0 1.0 NaN

1 2015-01-02 NaN 2.0 2.0 NaN

2 2015-01-02 NaN 3.0 3.0 NaN

3 2015-01-02 1.0 NaN 4.0 NaN

5 2015-01-02 NaN 2.0 NaN NaN

6 2015-01-03 1.0 NaN 6.0 NaN

7 2015-01-03 1.0 1.0 6.0 NaN

8 2015-01-03 1.0 1.0 6.0 8.0

In [556]: numpy_approach(df, reference='A')

Out[556]: Int64Index([3, 7, 8], dtype='int64')

In [557]: numpy_approach(df, reference='B')

Out[557]: Int64Index([0, 7, 8], dtype='int64')

In [558]: numpy_approach(df, reference='C')

Out[558]: Int64Index([0, 7, 8], dtype='int64')

In [568]: numpy_approach(df, reference='D')

Out[568]: Int64Index([8, 8, 8], dtype='int64')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值