为什么此代码在我的熊猫数据框中会产生NaN?

时间:2018-12-23 17:39:53

标签: python pandas

我正在尝试编写一些代码来预测运动季的结果。 我有一个数据帧,其中包含一个int32 Year列,一个用于列出球队名称的对象Team列,一个具有体育场容量的int32 Capacity列以及一个在给定年份内每场比赛平均出勤率的int32 Attend / G列。数据中没有先前的NaN。

这行代码完美地覆盖了给定年份之前的NYM队的体育场容量

train.loc[(train.Year < 2009) & (train.Team == 'NYM'), 'Capacity'] = 57333

但是,下面显示的代码无法执行此操作,因为它将PHI团队的能力转换为NaN,其他团队的能力也随之浮动。

我分配了一个变量来存储团队的最高出席人数/ G人数。变量是int32。

max_attend_per_g_phi = (train.loc[train['Team'] =='PHI',['Attend/G']].max())
print(max_attend_per_g_phi)
print(train.info()
train.loc[(train.Year < 2012) & (train.Team=='PHI'),'Capacity']=max_attend_per_g_phi
print(train.info())

第一个train.info呼叫输出

Attend/G        360 non-null int32
Capacity        360 non-null int32
Team            360 non-null object
Year            360 non-null int32

第二个呼叫输出时

Attend/G        360 non-null int32
Capacity        355 non-null float64
Team            360 non-null object
Year            360 non-null int32

使用与第一行代码相同的格式用该变量覆盖体育场容量,这将为PHI容量产生NaN,并将数据框中的其他容量从整数转换为浮点数。

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

例如,在某些情况下,使用CSV pd.read_csv(na_values = "?")读取熊猫文件时,您可以像这样检查数据后缀:

dataset.isna().sum()

如果您的数据在原始文档中包含NaN,则可能会带来反馈。