【问题标题】:Change column type to int64 pandas geopandas best practice将列类型更改为 int64 pandas geopandas best practice
【发布时间】:2018-07-26 12:29:18
【问题描述】:

我正在尝试将包含只有 .0 作为小数的浮点数的列转换为整数 64。我在这个论坛上找到了一些较旧的answers,但它们似乎不再起作用了。最终我使用了:

df_test["column_name"] = df_test['column_name'].apply(lambda x: np.int64(x))

我想知道这是否是 pandas 的最佳实践,以及与 to to_numeric()987654322 相比如何@

【问题讨论】:

    标签: python pandas python-3.5 geopandas


    【解决方案1】:

    pandas 中,这会起作用:

    df_test['column_name'] = df_test['column_name'].astype('int64')
    

    因为geopandas 是在pandas 之上构建的,所以它也应该可以工作。至于它与to_numeric 的比较,它们都是矢量化的,并且就速度而言具有可比性:

    测试astype 方法与to_numeric 方法对中等大小系列的速度,我得到astype 的平均0.00007522797584533691 秒和to_numeric0.0003248021602630615 秒。

    【讨论】:

    • 太棒了!我解析 np.int64 而不是字符串“int64”
    • 希望我能接受这两个答案,但速度比较很有帮助
    【解决方案2】:

    如果需要最佳整数格式,您的最佳选择:

    df_test["column_name"] = pd.to_numeric(df_test['column_name'], downcast='integer')
    

    这是矢量化的,df.series.apply 是一个循环并且很慢。

    如果您确实需要np.int64,请参阅@sacul's solution

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2022-11-22
      相关资源
      最近更新 更多