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

如何将Netstat数据DataFrame中空值行内容移至前一行新增列?

处理Netstat数据:将进程名合并到对应数据行

解决方案代码

假设你使用pandas处理数据,以下是高效处理大量Netstat数据的方法:

import pandas as pd
import numpy as np

# 模拟你的原始Netstat DataFrame(替换成你实际的数据)
data = {
    'Proto': ['TCP', 'chrome.exe', 'TCP', 'firefox.exe', 'UDP', 'svchost.exe'],
    'Local Address': ['127.0.0.1:80', np.nan, '192.168.1.2:443', np.nan, '0.0.0.0:53', np.nan],
    'Foreign Address': ['0.0.0.0:0', np.nan, '8.8.8.8:443', np.nan, '*:*', np.nan],
    'State': ['LISTEN', np.nan, 'ESTABLISHED', np.nan, np.nan, np.nan]
}
df = pd.DataFrame(data)

# 1. 标记仅第一列有值、其余列全空的行(进程名行)
process_rows = df.iloc[:, 1:].isna().all(axis=1)

# 2. 新增Process_name列,将进程名行的内容移到前一行
df['Process_name'] = df['Proto'].where(process_rows).shift(-1)

# 3. 过滤掉无用的进程名行,重置索引
df_clean = df[~process_rows].reset_index(drop=True)

代码解释

  1. 标记进程名行:df.iloc[:,1:].isna().all(axis=1)检查除第一列外的所有列是否全为空,返回布尔值Series,精准标记出仅存进程名的行。
  2. 转移进程名:df['Proto'].where(process_rows)只保留进程名行的Proto值,其余位置设为NaN;shift(-1)将这些进程名向上移动一行,直接对应到前面的有效Netstat数据行。
  3. 清理数据:通过~process_rows过滤掉无用的进程名行,reset_index重置索引保证数据结构整齐,最终得到每行包含完整Netstat数据+对应进程名的结构。

边界情况处理

  • 如果第一行就是无对应数据的进程名行,代码会自动忽略该行(过滤后不会保留无效数据)。
  • 若存在连续多个进程名行,代码会将最后一个进程名对应到前面的有效行(规范数据结构下不会出现此情况)。

内容的提问来源于stack exchange,提问作者Zarif Rahman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:42:22