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

这里有一种方法可以一次性获得不同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')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值