Python 合并具有优先级的列

Python 合并具有优先级的列,python,pandas,dataframe,Python,Pandas,Dataframe,我的输入数据框 MinA MinB MaxA MaxB 0 1 2 5 7 1 1 0 8 6 2 2 15 15 3 3 4 10 我想将“min”和“max”列合并为具有优先级的列(A列的优先级高于B列) 如果两列都为null,则它们应该具有默认值,对于min=0,对于max=100 期望

我的输入数据框

    MinA  MinB   MaxA  MaxB
0   1     2      5     7
1   1     0      8     6
2   2            15    15
3         3                   
4                      10
我想将“min”和“max”列合并为具有优先级的列(A列的优先级高于B列)

如果两列都为null,则它们应该具有默认值,对于min=0,对于max=100

期望输出为

    MinA MinB  MaxA MaxB      Min  Max
0   1     2      5     7      1    5
1   1     0      8     6      1    8
2   2            15    15     2    15
3         3                   3    100
4                      10     0    10

你能帮我一下吗?

这可以通过使用来完成。您的数据如下所示:

df = pd.DataFrame({
    'MinA': [1,1,2,None,None],
    'MinB': [2,0,None,3,None],
    'MaxA': [5,8,15,None,None],
    'MaxB': [7,6,15,None,10],
})

# Create new Column, using A as the base, if it is Nan, then use B.
# Then do the same again using specified values
df['Min'] = df['MinA'].mask(pd.isna, df['MinB']).mask(pd.isna, 0)
df['Max'] = df['MaxA'].mask(pd.isna, df['MaxB']).mask(pd.isna, 100)
上述操作将产生所需的输出:

    MinA    MinB    MaxA    MaxB    Min     Max
0   1       2       5       7       1       5
1   1       0       8       6       1       8
2   2       NaN     15      15      2       15
3   NaN     3       NaN     NaN     3       100
4   NaN     NaN     NaN     10      0       10

这可以通过使用。您的数据如下所示:

df = pd.DataFrame({
    'MinA': [1,1,2,None,None],
    'MinB': [2,0,None,3,None],
    'MaxA': [5,8,15,None,None],
    'MaxB': [7,6,15,None,10],
})

# Create new Column, using A as the base, if it is Nan, then use B.
# Then do the same again using specified values
df['Min'] = df['MinA'].mask(pd.isna, df['MinB']).mask(pd.isna, 0)
df['Max'] = df['MaxA'].mask(pd.isna, df['MaxB']).mask(pd.isna, 100)
上述操作将产生所需的输出:

    MinA    MinB    MaxA    MaxB    Min     Max
0   1       2       5       7       1       5
1   1       0       8       6       1       8
2   2       NaN     15      15      2       15
3   NaN     3       NaN     NaN     3       100
4   NaN     NaN     NaN     10      0       10
只需使用fillna()即可

df['Min'] = df['MinA'].fillna(df['MinB']).fillna(0)
df['Max'] = df['MaxA'].fillna(df['MaxB']).fillna(100)
只需使用fillna()即可

df['Min'] = df['MinA'].fillna(df['MinB']).fillna(0)
df['Max'] = df['MaxA'].fillna(df['MaxB']).fillna(100)