假设我有一个带有一些空值的数据框。对于每一行,我如何获得空值所属的列的计数。例如,在下面显示的数据框的第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
答案 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