gpt4 book ai didi

Python Pandas 根据动态数量的列创建列

转载 作者:太空宇宙 更新时间:2023-11-03 21:39:40 25 4
gpt4 key购买 nike

如果我根据用户参数创建一个新的数据框,例如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]})

为了更准确地了解输出列,让我们看一下第一行。 [(nan,nan,0,1)] -> 将 notna() 函数应用于前两个条目,并将比较“==1”应用于第三行和第四行。 -> 这给出了 [(false, false, false, true)] -> 将它们与 OR 表达式进行比较并收到所需的结果 True -> 1在第二行中,我们发现 [(nan,nan,0,0)] 因此我们发现输出为 0,因为前两列中没有有效值,而后两列中没有有效值.

对于参数 a=3,我们找到 6 列。

结果如下:

   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

最佳答案

您可以使用 notnull 进行矢量化运算和 eq :

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

关于Python Pandas 根据动态数量的列创建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52972349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com