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

如何在Pandas股票数据输出中简便隐藏指定列(解决drop报错)

解决方案:简便隐藏指定列的几种方法

你不需要用df.drop()删除列,直接选择需要保留的列反而更直观高效,还能避免因列名错误导致的报错。以下是几种适合你场景的简便方案:

方法1:直接指定要保留的列(最推荐)

直接列出你需要展示的列名,一步到位生成目标DataFrame,完全不用处理要删除的列:

import pandas as pd
from yahoo_fin import stock_info as si

# 读取持仓文件
df = pd.read_csv("portfoy.csv")

# 获取实时价格(示例:假设hisse_adı列是股票代码,土耳其股市后缀.IS可按需调整)
df["anlik_fiyat"] = df["hisse_adı"].apply(lambda x: si.get_live_price(x + ".IS"))

# 计算未平仓头寸:(实时价格 - 买入价) * 数量
df["acik_pozisyon"] = (df["anlik_fiyat"] - df["alis_fiyati"]) * df["miktar"]

# 直接选择需要保留的列,跳过要隐藏的列
sonuc_df = df[["hisse_adı", "miktar", "alis_fiyati", "alis_tarihi", "anlik_fiyat", "acik_pozisyon"]]

# 输出结果
print(sonuc_df)

方法2:用isin()反向排除指定列

如果需要保留的列太多,不想逐个列出,可以反向排除要隐藏的列:

# 定义要隐藏的列
gizlenecek_sutunlar = ["tip", "satis_fiyati", "satis_tarihi"]

# 筛选出不在隐藏列表中的列
sonuc_df = df.loc[:, ~df.columns.isin(gizlenecek_sutunlar)]

方法3:用正则表达式过滤列

适合列名有规律的场景,用filter()配合正则排除指定列:

# 正则匹配:排除tip、satis_fiyati、satis_tarihi这三列
sonuc_df = df.filter(regex='^(?!tip|satis_fiyati|satis_tarihi).*$')

关于df.drop()报错的常见原因

你之前用drop()报错,大概率是这几个问题:

  • 列名拼写错误(比如csv里是Tip而代码里写的tip,大小写不匹配)
  • 目标列不存在于DataFrame中
  • 忘记设置axis=1(默认是行方向,删除列必须指定axis=1或columns=参数)

用上述选择列的方法,不仅更简便,还能在列名错误时直接抛出明确的KeyError,方便快速排查问题。

内容的提问来源于stack exchange,提问作者Oguz Han

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:33:35