如何获取DataFrame每列除列名外的非空唯一值并生成指定结构新表
实现方案(基于Pandas)
你可以直接通过遍历每列做非空去重后拼接,或者用Pandas自带的聚合方法实现,示例代码如下:
1. 环境导入与示例数据构造
import pandas as pd import numpy as np # 构造你给出的示例DataFrame df = pd.DataFrame({ 'value1': ['ab', 'ab', 'ba', 'gf'], 'value2': ['gh', 'lk', 'ag', 'cv'], 'value3': ['mn', 'tu', 'ga', np.nan] })
2. 核心逻辑实现
两种写法效果一致,按需选择:
- 遍历写法,逻辑更直观:
result_list = [] for col_name in df.columns: # 对当前列先剔除空值,再取唯一值,最后用逗号拼接 joined_value = ','.join(df[col_name].dropna().unique()) result_list.append({'columns': col_name, 'value': joined_value}) result_df = pd.DataFrame(result_list)
- 聚合写法,代码更简洁:
result_df = df.agg(lambda series: ','.join(series.dropna().unique()))\ .reset_index()\ .rename(columns={'index': 'columns', 0: 'value'})
执行完成后打印result_df即可得到你需要的输出结果。
内容的提问来源于stack exchange,提问作者yellow_smile
相关产品推荐
相关产品推荐

