创建重复Dataframe行并填充列表值,重复路径转为NaN的实现方法
实现步骤与代码示例
步骤1:构建路径与数据的映射
首先把你读取到的各路径下的列表数据,整理为路径为key、对应数据列表为value的字典,示例结构如下:
path_data_map = { "/global/162940/mill/scanfiles0001": [ [256, 10.0, 2605, 100, 86000], [256, 20.0, 5210, 100, 86000], [256, 40.0, 10421, 100, 86000], [256, 50.0, 13026, 100, 86000] ], "/global/162940/mill/scanfiles0002": [ [256, 60.0, 15631, 100, 86000], [256, 80.0, 20841, 100, 86000], [256, 120.0, 31262, 100, 86000] ] }
如果你的数据是从文件批量读取,可通过遍历路径生成该映射字典。
步骤2:合并展开数据
使用pandas的explode方法将每个路径对应的多行数据展开,再拆分出A-E字段:
import pandas as pd import numpy as np # 替换为你自己的初始DataFrame df = pd.DataFrame({ "JobID": [43402866, 43408681], "Path": ["/global/162940/mill/scanfiles0001", "/global/162940/mill/scanfiles0002"] }) # 绑定每个路径对应的所有数据 df["data_list"] = df["Path"].map(path_data_map) # 展开为多行 df = df.explode("data_list", ignore_index=True) # 拆分列表为A-E五列 df[["A", "B", "C", "D", "E"]] = pd.DataFrame(df["data_list"].tolist(), index=df.index) # 删除临时列 df = df.drop("data_list", axis=1)
步骤3:处理重复Path字段
同一个JobID下仅保留第一行的Path值,其余替换为NaN:
df.loc[df.duplicated("JobID"), "Path"] = np.nan
执行完上述代码后,df即为你需要的最终结构。
内容的提问来源于stack exchange,提问作者mojojojo
相关产品推荐
相关产品推荐

