pandas.Series将int64转换为NaN时会发生什么?

问题描述 投票:0回答:1

我有一个带日期和整数(标题:日期,数字)的csv,用制表符分隔。

我正在尝试使用CalMap(该页面上的演示)创建日历热图。创建图表的函数采用DateTime索引的数据。

df = pd.read_csv("data.csv",delimiter="\t")
df['Date'] = df['Date'].astype('datetime64[ns]')

events = pd.Series(df['Date'],index = df['Number'])
calmap.yearplot(events)

但是当我检查events.head(5)时,会给出日期,后跟NaN。我检查了df['Number'].head(5),它们显示为int64。

导致此转换的我在做什么错?

编辑:下面的数据

Date    Number
7/9/2018    40
7/10/2018   40
7/11/2018   40
7/12/2018   70
7/13/2018   30
python pandas nan series
1个回答
0
投票

首先,它不是NaN,它不是NaT(不是时间戳记),这对Pandas来说是唯一的,尽管Pandas使它与NaN兼容,并且在浮点列中将其与NaN相似地用于标记丢失的数据。

NaT的作用显然取决于pd.Series(data, index=index)的类型。如果data是列表,则data必须具有相等的长度,并且将以index为数据且Series为索引的方式构造新的data。但是,如果index已经是data(例如Series),它将取而代之与df['Date']对应的行,并从这些行中构造一个新的index。例如:

Series

会给你

pd.Series(df['Date'], [1, 1, 4])

1 2018-07-10 1 2018-07-10 4 2018-07-13 来自第1行,2018-07-10来自2018-07-11的第4行。但是,样本输入数据中没有索引为df['Date']4070的行,因此假定缺少数据,而是插入了30

相反,这是使用列表时得到的:

NaT
© www.soinside.com 2019 - 2024. All rights reserved.