【问题标题】:Unable to convert pandas dataframe column to int variable type using .astype(int) method [duplicate]无法使用 .astype(int) 方法将 pandas 数据框列转换为 int 变量类型 [重复]
【发布时间】:2021-03-09 21:55:40
【问题描述】:

我正在遍历数据帧的行以提取如下值,但我收到的始终是浮点值,我无法将 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_numericround(),但尽管有这种方法,但还是没有运气

有趣的是,当我输出 result["YEAR_TORONTO"].iloc[1].astype(int) if not np.isnan(result["YEAR_TORONTO"].iloc[i]) else np.nan, 我得到2016 作为一个int,但是一旦我通过调用result 输出整个数据帧,我仍然得到2016.0 作为一个浮点数

样本数据(输入):

    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,得到了相同的结果。

【问题讨论】:

  • 你能展示一些示例数据吗?而且,希望这不是一个大数据集,因为您是按元素而不是按系列应用这些操作。
  • 刚刚添加了一些示例数据。我明智地做这个元素有问题吗?我将获得的记录最多应该只有 4 行,但如果有更多数据会有什么问题?
  • 存在 NaN,所以默认所有值都是浮点数,对于带有 NaNs 的整数需要 result["YEAR_TORONTO"] = result["YEAR_TORONTO"].astype('Int64')

标签: python pandas types type-conversion integer


【解决方案1】:

您使用astype() 的方法是正确的,但如果您的列包含nan,它确实有效。你可以尝试先拆分

result["YEAR_TORONTO"].astype(str).str.split('.', expand=True)[0].tolist()

然后分开然后从那里拿走。

或者

Result.loc[RESULT['TORONTO'].notnull(), 'x'] = result.loc[result['TORONTO'].notnull(), 'x'].apply(int)

【讨论】:

  • 刚刚尝试包含第一行代码,仍然得到一个与以前相同输出的浮点数。第二行是如何工作的?我不断收到'x' 的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-03
  • 1970-01-01
相关资源
最近更新 更多