如何保留原DataFrame数据,拆分列内容填充NaN值列?
解决方案
要实现需求同时保留原DataFrame的所有数据,核心是仅定位并更新符合条件的行,而非单独提取处理后丢失原数据。具体步骤如下:
读取数据并纠正语法错误
注意pd.load_csv是笔误,正确写法为pd.read_csv:import pandas as pd df = pd.read_csv("data.csv")创建条件掩码定位目标行
精准筛选出Task为NaN且Room包含'closed'(不区分大小写)的行:mask = df['Task'].isna() & df['Room'].str.contains('closed', case=False)拆分目标行的Room列
使用正向预查正则(?=closed)拆分字符串,确保'closed'及后续内容作为拆分后的第二部分:split_result = df.loc[mask, 'Room'].str.split("(?=closed)", expand=True)更新原DataFrame的对应列
将拆分后的前半部分赋值回Room列,后半部分填充Task列的NaN值,仅更新符合条件的行:df.loc[mask, 'Room'] = split_result[0] df.loc[mask, 'Task'] = split_result[1]
执行完上述代码后,原DataFrame的其他行和列都会保持不变,仅目标行完成拆分更新。
内容的提问来源于stack exchange,提问作者JBA
相关产品推荐
相关产品推荐

