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

如何修正Pandas代码,筛选Jabatan为'-'且持股数非'-'的股东名称?

解决方案

你的核心需求是筛选Jabatan列为'-'且Jumlah Lembar Saham列不为'-'的行,提取这些行的Nama值。原代码的问题在于多次覆盖筛选结果,且最后用了错误的条件(df[POSITION] == True),完全偏离了目标逻辑。

直接用Pandas的布尔索引就能高效实现需求,修正后的代码如下:

import pandas as pd

input_csv_file = "./CSV/Officers_and_Shareholders.csv"
COLUMNS = ['Nama', 'Jabatan', 'Alamat', 'Klasifikasi Saham', 'Jumlah Lembar Saham', 'Total']
df = pd.read_csv(input_csv_file, skiprows=11, on_bad_lines='skip', names=COLUMNS)
df.fillna('', inplace=True)

NAME = 'Nama'
NUMBER_OF_SHARES = "Jumlah Lembar Saham"
POSITION = "Jabatan"

# 构造筛选条件:Jabatan是'-',且Jumlah Lembar Saham不是'-'
filter_condition = (df[POSITION] == '-') & (df[NUMBER_OF_SHARES] != '-')
# 筛选符合条件的行,提取Nama列转为列表
shareholders_list = df.loc[filter_condition, NAME].tolist()

print(shareholders_list)

代码说明:

  • filter_condition直接对应你要的两个条件,用&连接(注意Pandas中布尔条件要用括号包裹,避免运算优先级问题)
  • df.loc[filter_condition, NAME]精准提取符合条件行的Nama列数据
  • 最后用.tolist()转成你需要的列表格式

运行这段代码后,就能得到你期望的结果:

['PT CTCORP INFRASTRUKTUR D INDONESIA,', 'I E S M PT INTRERPORT PATIMBAN AGUNG,', 'PT PATIMBAN MAJU BERSAMA,', 'PT TERMINAL PETIKEMAS SURABAYA,']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:40:49