在Pandas Dataframe中计算连续数量的Null值

时间:2016-10-31 01:46:39

标签: python pandas isnull

假设我有一个带有一些空值的数据框。对于每一行,我如何获得空值所属的列的计数。例如,在下面显示的数据框的第2行中,如何打印/返回列'A'和'B',其中有空值?

对于更大的背景,我有一个Billboard单曲表,以及他们每周收到的分数(总共76周,76列),都作为数据框列。有些星期的值为空值,因为特定歌曲的表现不够好,而且我想在那首特定歌曲的行中找到df.isnull()为True的列。

df = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))
df.ix[4, 'C'] = np.nan
df.ix[4, 'B'] = np.nan
df.ix[2, 'B'] = np.nan
df.ix[2, 'A'] = np.nan
df.ix[6,'D'] = np.nan
df.ix[6,'C'] = np.nan
df

1 个答案:

答案 0 :(得分:2)

您可以使用apply()方法循环遍历行,并使用isnull()方法创建逻辑系列以对索引进行子集化,在这种情况下,索引就是列名。这将返回列名列表,其中每行的值为null:

import pandas as pd
df.apply(lambda row: row.index[row.isnull()].tolist(), axis = 1)

#0        []
#1        []
#2    [A, B]
#3        []
#4    [B, C]
#5        []
#6    [C, D]
#7        []
#8        []
#9        []
#dtype: object