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

如何在Pandas DataFrame首尾添加两行全0数据并重置索引?

问题

我有一个名为df_x的Pandas DataFrame,创建代码如下:

# create DataFrame
df_x = pd.DataFrame({'logvalue': ['20', '20.5', '18.5', '2', '10'],
                     'ID': ['1', '2', '3', '4', '5']})

需要完成以下操作:

  • 在DataFrame的开头和结尾各添加一行全0数据
  • 新增violatedInstances列,取值与示例一致
  • 重新整理DataFrame的索引

期望输出表格:

logvalueIDviolatedInstances
000
2010
20.521
18.530
241
1051
000
解决方案

通过Pandas的concat方法和列赋值即可实现,步骤如下:

  1. 新增violatedInstances列
    根据示例给定的取值直接赋值,若有判断规则可替换为条件逻辑:

    df_x['violatedInstances'] = [0, 1, 0, 1, 1]
    
  2. 构造首尾全0行
    创建与原DataFrame列名完全匹配的单行DataFrame:

    top_row = pd.DataFrame({'logvalue': ['0'], 'ID': ['0'], 'violatedInstances': [0]})
    bottom_row = pd.DataFrame({'logvalue': ['0'], 'ID': ['0'], 'violatedInstances': [0]})
    
  3. 合并数据并重置索引
    使用pd.concat合并首尾行与原数据,通过ignore_index=True自动重置索引:

    result_df = pd.concat([top_row, df_x, bottom_row], ignore_index=True)
    

完整可运行代码

import pandas as pd

# 创建原DataFrame
df_x = pd.DataFrame({'logvalue': ['20', '20.5', '18.5', '2', '10'],
                     'ID': ['1', '2', '3', '4', '5']})

# 添加目标列
df_x['violatedInstances'] = [0, 1, 0, 1, 1]

# 构造首尾全0行
top_row = pd.DataFrame({'logvalue': ['0'], 'ID': ['0'], 'violatedInstances': [0]})
bottom_row = pd.DataFrame({'logvalue': ['0'], 'ID': ['0'], 'violatedInstances': [0]})

# 合并并重置索引
result_df = pd.concat([top_row, df_x, bottom_row], ignore_index=True)

# 打印结果
print(result_df)

扩展说明

如果violatedInstances的取值需要根据logvalue的数值判断(比如示例中20.5、2、10对应1),可改用条件赋值:

# 转换logvalue为数值类型后判断
df_x['violatedInstances'] = df_x['logvalue'].astype(float).apply(
    lambda x: 1 if x in [20.5, 2, 10] else 0
)

内容的提问来源于stack exchange,提问作者Niro Mal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:41:45