pandas 它看起来像一个列表,但我不能索引到它:值错误:值(2)的长度与索引(279999)的长度不匹配

wlzqhblo  于 2022-12-21  发布在  其他
关注(0)|答案(2)|浏览(129)

我从这里导入CSV文件:https://raw.githubusercontent.com/kwartler/Harvard_DataMining_Business_Student/master/BookDataSets/LaptopSales.csv
此代码适用于:

from dfply import *
import pandas as pd
df = pd.read_csv("LaptopSales.csv")
(df >> select(X["Date"]) >> mutate(AdjDate = (X.Date.str.split(" "))) >> head(3))

并产生以下结果:

Date                AdjDate
0   01-01-2008 00:01    [01-01-2008, 00:01]
1   01-01-2008 00:02    [01-01-2008, 00:02]
2   01-01-2008 00:04    [01-01-2008, 00:04]

但是当我试图提取列表中的第一个元素时:

from dfply import *
import pandas as pd
df = pd.read_csv("LaptopSales.csv")
(df >> select(X["Date"]) >> mutate(AdjDate = (X.Date.str.split(" ")[0])) >> head(3))

我得到了一堵错误墙,最终导致:

ValueError: Length of values (2) does not match length of index (279999)
qybjjes1

qybjjes11#

调整日期=(X.日期.字符串拆分(““)[0]))
实际上是逐个索引比较2个系列,并返回一个具有主系列长度的系列。
那么你就不能把它存储在一个长度为2的变量中,并且Pandas会产生错误

yx2lnoni

yx2lnoni2#

答案是CSV文件中的一行在日期列中包含一个值NaN。该值不能在““上拆分。Nan是一个浮点数:由于拆分无法创建列表,因此索引操作失败。它位于.CSV文件中的第2913行:“,51,SE14 6LA,SE8 3JD,460,15,4,2,1.5,是,80,是,536682,177068,537175,177885”
我之所以没有简单地删除这个问题,是因为这个数据集是公开的,而且似乎是哈佛大学课程的一部分:https://github.com/kwartler/Harvard_DataMining_Business_Student

相关问题