求助:Pandas按字段名拆分字符串并生成唯一列的实现方法
问题解决:将Pandas中结构化字符串列拆分为唯一字段列
原始数据
原始DataFrame包含一列"Layer 7 Data",内容如下:
0 | Layer 7 Data ------------------------------------------- 1 | HTTP Request Method: GET, HTTP URI: /ucp/ 2 | HTTP Return Code: 200, HTTP User-Agent: Mozilla/5.0 3 | HTTP Return Code: 401, HTTP Request Method: POST
直接用df = df["Layer 7 Data"].str.split(",", expand=True)拆分后,列仅按拆分位置生成,无法对齐唯一字段,不符合需求。
解决方案
通过将每行字符串转换为字段名对应完整内容的字典,再批量转为DataFrame,即可自动对齐所有唯一字段,缺失值自动填充NaN(对应你要的Null)。
代码实现
import pandas as pd # 模拟原始数据(已有DataFrame可跳过此步) df = pd.DataFrame({ "Layer 7 Data": [ "HTTP Request Method: GET, HTTP URI: /ucp/", "HTTP Return Code: 200, HTTP User-Agent: Mozilla/5.0", "HTTP Return Code: 401, HTTP Request Method: POST" ] }) # 核心处理逻辑 processed_df = pd.DataFrame( df["Layer 7 Data"].apply( lambda x: {item.split(": ", 1)[0]: item for item in x.split(", ")} ).tolist() ) # 若需要将列名改为序号(如0、1、2、3),执行以下代码 processed_df.columns = [str(i) for i in range(len(processed_df.columns))] # 查看最终结果 print(processed_df)
输出效果
最终输出的结构与你期望的一致:
0 1 2 3 0 HTTP Request Method: GET HTTP URI: /ucp/ NaN NaN 1 NaN NaN HTTP Return Code: 200 HTTP User-Agent: Mozilla/5.0 2 HTTP Request Method: POST NaN HTTP Return Code: 401 NaN
内容的提问来源于stack exchange,提问作者Manh Huynh Duc
相关产品推荐
相关产品推荐

