Python Pandas在具有动态列数的条件下创建列

时间:2018-10-24 15:06:45

标签: python pandas dataframe

如果我根据用户参数创建新的数据框,请说PlaySoundA(("Data\\sounds\Persos\\ATK\\" + NameOP + ".wav").c_str(), NULL, SND_FILENAME) 。因此,我的数据帧a = 2缩小到df的4(ax2)列。例如:

df_new

为了在df_new = pd.DataFrame(data = {'col_01_01': [float('nan'),float('nan'),1,2,float('nan')], 'col_02_01': [float('nan'),float('nan'),1,2,float('nan')],'col_01_02': [0,0,0,0,1],'col_02_02': [1,0,0,1,1],'output':[1,0,1,1,1]}) 列上更精确,让我们看第一行。 output->将notna()函数应用于前两个条目,并将比较“ == 1”应用于第三和第四行。 ->这将使[(nan,nan,0,1)]->将其与OR表达式进行比较,并获得所需的结果True-> 1 在第二行中,我们发现[(false, false, false, true)],因此我们发现输出为0,因为前两个列没有有效值,后两个列没有0。

对于参数[(nan,nan,0,0)],我们发现6列。

结果如下所示:

a=3

1 个答案:

答案 0 :(得分:0)

您可以对notnulleq使用向量化操作:

null_cols = ['col_01_01', 'col_02_01']
int_cols = ['col_01_02', 'col_02_02']

df['output'] = (df[null_cols].notnull().any(1) | df[int_cols].eq(1).any(1)).astype(int)

print(df)

   col_01_01  col_02_01  col_01_02  col_02_02  output
0        NaN        NaN          0          1       1
1        NaN        NaN          0          0       0
2        1.0        1.0          0          0       1
3        2.0        2.0          0          1       1
4        NaN        NaN          1          1       1