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

使用dfply提取split后列表元素触发ValueError问题求助

解决dfply中提取str.split结果第一个元素的报错问题

错误原因

你触发ValueError的核心问题是:X.Date.str.split(" ")返回的是Series对象(每个元素是对应行分割后的列表),直接加[0]会取出整个Series的第一个元素(也就是第一行分割后的列表,长度为2),然后试图把这个长度为2的列表作为新列值,和原DataFrame的279999行不匹配,因此报错。

两种正确写法

写法1:用str访问器取每个列表的第一个元素

from dfply import *
import pandas as pd

# 读取数据(也可直接从链接读取)
df = pd.read_csv("LaptopSales.csv")

(df >> select(X["Date"]) 
   >> mutate(AdjDate = X.Date.str.split(" ").str[0]) 
   >> head(3))

这里str.split(" ").str[0]是对Series中的每一个列表元素,单独取其索引为0的项,返回的是和原Series长度一致的结果,不会出现行数不匹配问题。

写法2:用expand=True拆分后直接选列

from dfply import *
import pandas as pd

df = pd.read_csv("LaptopSales.csv")

(df >> select(X["Date"]) 
   >> mutate(AdjDate = X.Date.str.split(" ", expand=True)[0]) 
   >> head(3))

expand=True会把每行的分割结果展开成多列的DataFrame,之后[0]直接选取第一列,同样能得到每行分割后的第一个元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:15:22