计算 Pandas 数据帧中的连续空值数

Counting a consecutive number of Null Values in a Pandas Dataframe

假设我有一个包含一些空值的数据框。对于每一行,我将如何计算空值所属的列。例如,在下面显示的数据框的第 2 行中,我如何将其获取到 print/return 列 'A' 和 'B',那里有空值?

为了获得更大的背景信息,我有一个 table 广告牌单曲,以及他们每周收到的分数(总共 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

您可以使用 apply() 方法循环遍历行,并使用 isnull() 方法创建逻辑系列以对索引(在本例中为列名)进行子集化。此 returns 列名称列表,其中每行的值为空:

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