You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame处理:关联CSV中ID与键值对并清洗数据

解决方案

你的数据中,id和email非空的行是分组标识,后续notes_key/notes_value非空的行属于该分组。通过以下步骤可实现需求:

  1. 将原数据中的字符串'NaN'转换为真正的缺失值(np.nan),便于pandas处理;
  2. 用前向填充(ffill)把分组的id和email传递给对应的键值对行;
  3. 过滤掉无有效键值对的行。

完整代码

import pandas as pd
import numpy as np

# 初始化原数据
data = [[12,'abc@xyz.com', 'NaN', 'NaN' ], [12,'abc@xyz.com','NaN' , 'NaN'], ['NaN', 'NaN','x' , 'y' ] , ['NaN','NaN', 'a','b'] , ['13','qwer@123.com','NaN','NaN'],['NaN','NaN', 'x','r']]
df = pd.DataFrame(data , columns = ['id' , 'email','notes_key' , 'notes_value'])

# 转换字符串'NaN'为真实缺失值
df = df.replace('NaN', np.nan)

# 前向填充id和email,关联分组与键值对
df[['id', 'email']] = df[['id', 'email']].ffill()

# 过滤掉无有效键值对的行
result_df = df.dropna(subset=['notes_key']).reset_index(drop=True)

print(result_df)

输出结果

id         email notes_key notes_value
0  12  abc@xyz.com         x           y
1  12  abc@xyz.com         a           b
2  13  qwer@123.com         x           r

内容的提问来源于stack exchange,提问作者Ramesh Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 01:20:39