Pandas:在变量列表中使用条件df [variable] .isnull创建新列

时间:2017-12-07 18:31:26

标签: python pandas

我想创建一个掩码列,其中1表示一组其他列中有数据,0表示同一组中有空白

 A  B   C   D   E   mask1
 0  13  2   45  96  1
 1  14  2   45  96  1
 2  15  9   1.  NaN 1
 3  16  9   1.0 NaN 1
 4  17  5   0.0 NaN 1
 5  18  6   1.0 967 1
 6  19  6   1.0 976 1
 7  20  9   1.0 294 1
 8  21  5   0.0 372 1
 9  13  5   NaN 170 0
10  62  5   NaN 100 0
11  22  20  NaN 170 0
12  13  NaN 0.0 996 0

我设法使用以下代码:

df2["mask1"] = np.where((df2['C'].isnull() | df2['D'].isnull()) , 0, 1)

现在我想为具有更多变量的更大数据帧自动执行此操作,即,我想指定要用于此掩码的变量。我正在考虑创建一个变量列表,例如

var = [C, D, E]

我可以用它来执行此操作,但我不确定如何应用我使用此列表提出的相同代码。 for循环?

1 个答案:

答案 0 :(得分:3)

选择列并应用isnull或notnull

cols = ['C', 'D', 'E']
df['mask1'] = df[cols].notnull().all(1).astype(int)

    A   B   C       D       E   mask1
0   0   13  2.0     45.0    96.0    1
1   1   14  2.0     45.0    96.0    1
2   2   15  9.0     1.0     NaN     0
3   3   16  9.0     1.0     NaN     0
4   4   17  5.0     0.0     NaN     0
5   5   18  6.0     1.0     967.0   1
6   6   19  6.0     1.0     976.0   1
7   7   20  9.0     1.0     294.0   1
8   8   21  5.0     0.0     372.0   1
9   9   13  5.0     NaN     170.0   0
10  10  62  5.0     NaN     100.0   0
11  11  22  20.0    NaN     170.0   0
12  12  13  NaN     0.0     996.0   0