我正在遍历数据帧的行以提取值,如下所示,但我收到的总是一个浮点值,并且我无法将result["YEAR_TORONTO"]
和result["YEAR_TORONTO2"]
转换为int
for i in range(0, len(result)):
if result["SOURCE_DATASET"].iloc[i] == "toronto":
result["YEAR_TORONTO"].iloc[i] = pd.to_datetime(result["START_DATE"].iloc[i]).year
result["YEAR_TORONTO"].iloc[i].astype(int) if not np.isnan(result["YEAR_TORONTO"].iloc[i]) else np.nan
result["YEAR_TORONTO2"].iloc[i] = result["YEAR_TORONTO"].iloc[i]
你知道为什么会这样吗?尝试了多种方法,包括pd.to_numeric
和round()
,但尽管采用了这种方法,但没有成功
有趣的是,当我输出
result["YEAR_TORONTO"].iloc[1].astype(int) if not np.isnan(result["YEAR_TORONTO"].iloc[i]) else np.nan
,
我将2016
作为int获取,但一旦通过调用result
输出整个数据帧,我仍然将2016.0
作为float获取
样本数据(输入):
SOURCE_DATASET START_DATE
0 brampton 06-04-16
1 toronto 06-04-16
2 brampton 06-04-16
3 toronto 06-04-99
样本数据(输出):
SOURCE_DATASET START_DATE YEAR_TORONTO YEAR_TORONTO2
0 brampton 06-04-16 NaN NaN
1 toronto 06-04-16 2016.0 2016.0
2 brampton 06-04-16 NaN NaN
3 toronto 06-04-99 1999.0 1999.0
也尝试了np.where
,得到了相同的结果
您使用
astype()
的方法是正确的,但如果您的列包含nan
,它确实有效。你可以试着先分开然后分开,然后从那里拿走
或者
相关问题 更多 >
编程相关推荐