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

如何从CSV选中值生成数组并转换为可直接求和的普通数组?

问题描述

用户编写了如下Python代码,尝试从DataFrame中筛选account为'123'的shares值并添加到数组:

array = []

for vid in account:
    vid_shares = (df.loc[df['account'] == '123', 'shares'])
    array.append(vid_shares)

print(array)

执行后得到带索引的Series格式输出:

1      10.0
2      15.0
3       0.0
4      12.0
5      17.0
6       0.0
7       9.0
8      12.0
9      13.0
10      8.0
11     30.0
12      0.0
13     16.0
Name: shares, dtype: float64

用户需要将结果转为[10, 15, 0, 12,...]这类普通数值数组,方便用sum()函数求和。

解决方案

方法1:直接转换Series为数值数组

首先你的循环完全多余——每次循环都重复筛选了所有account='123'的行,导致数组里多次存入同一个Series。直接一次性筛选后转换即可:

# 筛选目标数据
target_shares = df.loc[df['account'] == '123', 'shares']
# 转numpy数值数组
num_array = target_shares.values
# 或者用to_numpy(),更推荐
num_array = target_shares.to_numpy()

# 甚至不需要转数组,Series本身支持sum()
total = target_shares.sum()

方法2:转为Python原生列表

如果需要的是Python列表而非numpy数组,用tolist():

num_list = target_shares.tolist()
total = sum(num_list)

(可选)修正原始循环代码

如果你的循环有其他未说明的逻辑,那每次append时要提取具体数值(比如取单值用.iloc[0]),但显然这个场景下循环是没必要的,建议用上面的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:10:32