df = pd.DataFrame({
'subsegment': ['corp', np.nan, 'terr'],
'region': ['japan', np.nan, np.nan],
'subregion': [np.nan, 'se', 'ne'],
'segment': [np.nan,'ent','comm']
})
Run Code Online (Sandbox Code Playgroud)
我正在尝试迭代上面的数据帧,如果该值不是 NaN,则将列标题添加为新列“Mode”中的值或值的一部分(取决于 NaN 的数量)。
原始DF
| 子段 | 地区 | 次区域 | 部分 |
|---|---|---|---|
| 公司 | 日本 | 南 | 南 |
| 南 | 南 | 硒 | 耳鼻喉科 |
| 土地 | 南 | 讷 | 通讯 |
所需输出 DF
| 子段 | 地区 | 次区域 | 部分 | 模式 |
|---|---|---|---|---|
| 公司 | 日本 | 南 | 南 | 子段区域 |
| 南 | 南 | 硒 | 耳鼻喉科 | 次区域-部分 |
| 土地 | 南 | 讷 | 通讯 | 次分段-次区域-分段 |
我尝试使用不为空的列的所有组合创建单独的较小的 dfs,然后将这些 dfs 连接在一起,但这似乎效率极低。
df1 = df.loc[~(df['subsegment'].isna()) & (~df['region'].isna()) & (~df['region'].isna())]
df2 = df.loc[~(df['region'].isna()) & (~df['subregion'].isna()) & (~df['segment'].isna())]
df3 …Run Code Online (Sandbox Code Playgroud)