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