我正在尝试编写一些代码来预测运动季的结果。 我有一个数据帧,其中包含一个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,并将数据框中的其他容量从整数转换为浮点数。
有人知道为什么会这样吗?
答案 0 :(得分:1)
例如,在某些情况下,使用CSV pd.read_csv(na_values = "?")
读取熊猫文件时,您可以像这样检查数据后缀:
dataset.isna().sum()
如果您的数据在原始文档中包含NaN,则可能会带来反馈。