首页 > 解决方案 > 根据其他列的内容创建新列

问题描述

我有一个数据框,显示在这里。

在此处输入图像描述

我想创建一个名为的新列Result

应根据以下规则创建结果。

  1. 返回基于列显示最多的值D,F,M,P
  2. IG如果and之间有联系HY,则返回HY
  3. 不要算作NaN一个价值。

我生成的数据框会是这样的:

在此处输入图像描述

 df_start = pd.DataFrame({'P':['IG','HY','IG',np.nan,'HY'], 'M':['HY','HY','IG', np.nan,'IG'], 'F':['HY',np.nan,'HY', np.nan,'IG'],'D':['IG','IG','IG', 'HY','IG']})

 df_result = pd.DataFrame({'Result':['HY','HY','IG', 'HY','IG'],'P':['IG','HY','IG',np.nan,'HY'], 'M':['HY','HY','IG', np.nan,'IG'], 'F':['HY',np.nan,'HY', np.nan,'IG'],'D':['IG','IG','IG', 'HY','IG']}

标签: pythonpandas

解决方案


使用mode

df_start['Result']= df_result.mode(1).iloc[:, 0]

输出:

     P    M    F   D Result
0   IG   HY   HY  IG     HY
1   HY   HY  NaN  IG     HY
2   IG   IG   HY  IG     IG
3  NaN  NaN  NaN  HY     HY
4   HY   IG   IG  IG     IG

推荐阅读