小编mtm*_*186的帖子

如果列中的值不是 NaN (Pandas),则迭代数据框并基于创建新列

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)

python pandas

3
推荐指数
1
解决办法
110
查看次数

标签 统计

pandas ×1

python ×1