添加包含现有列名称的新列

Gon*_*oso 4 python max pandas

我正在处理一个看起来像这样的数据框:

    FID           geometry                                       Code   w1  w2
0   12776   POLYGON ((-1.350000000000025 53.61540813717482...   12776   0   1
1   13892   POLYGON ((6.749999999999988 52.11964001623148,...   13892   1   0
2   14942   POLYGON ((-3.058896639907732e-14 51.3958198431...   14942   1   1
3   18964   POLYGON ((8.549999999999974 45.26941059233587,...   18964   0   1
4   19863   POLYGON ((-0.4500000000000305 44.6337746953077...   19863   0   1
Run Code Online (Sandbox Code Playgroud)

我的目标是添加一个标记为"Max"的列,我将写入哪个w(w1,w2)的频率更高.

到目前为止,我只管理添加一个列,其中显示最大频率,而不是它出现的列的名称.

期望的输出将是这样的:

    FID     geometry     Code   w1  w2   Max
0   12776   ...         12776   0   1    w2
1   13892   ...         13892   1   0    w1
2   14942   ...         14942   1   1    0
3   18964   ...         18964   0   1    w2
4   19863   ...         19863   0   1    w2
Run Code Online (Sandbox Code Playgroud)

此外,我想在频率相同的情况下(如果可能的话)同时填充零.

任何帮助,将不胜感激!:-)

piR*_*red 5

使用np.where选择0时,他们是平等idxmax(1)的时候都没有.

df['max'] = np.where(df.w1 == df.w2, 0, df[['w1', 'w2']].idxmax(1))
df

    FID     geometry     Code   w1  w2   Max
0   12776   ...         12776   0   1    w2
1   13892   ...         13892   1   0    w1
2   14942   ...         14942   1   1    0
3   18964   ...         18964   0   1    w2
4   19863   ...         19863   0   1    w2
Run Code Online (Sandbox Code Playgroud)