【问题标题】:Pandas: Dealing with a column with multiple data typesPandas:处理具有多种数据类型的列
【发布时间】:2019-05-29 11:12:27
【问题描述】:

我的数据框 df 中有一个列,其中包含 float 和 str 类型的值:

df['ESTACD'].unique()

Output:
array([11.0, 32.0, 31.0, 35.0, 37.0, 84.0, 83.0, 81.0, 97.0, 39.0,
   38.0, 40.0, 34.0, 7.0, 17.0, 16.0, 14.0, 82.0, 8.0, '11', '40',
   '31', '39', '68', '97', '32', '33', '37', '38', '83', '84', '93',
   '35', '81', '67', '07', '80', '71', 'A3', '14', '17', '22', '34',
   '36', '82', '08'], dtype=object)

我希望将此列的所有值转换为字符串类型。在这里使用astype(str) 是不够的,因为我们最终会得到诸如“11.0”、“32.0”等值。

我能想到的唯一其他方法是使用 for 循环:

for i in range(len(df)):
    if (type(df['ESTACD'][i]) == float) or (df['ESTACD'][i].startswith('0')):
        df['ESTACD'][i] = str(int(df['ESTACD'][i]))

但是,这在大型数据集上非常耗时。有没有办法在没有循环的情况下实现这一点?

【问题讨论】:

  • '08' 这样的值应该变成什么? 8 还是留下08
  • 它们必须转换为 8,这是 or 的第二部分。

标签: python pandas dataframe data-analysis


【解决方案1】:

我觉得这里应该非常快用纯python之类的:

df['ESTACD'] = [str(int(x)) if isinstance(x, float) else x for x in df['ESTACD']]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2020-02-07
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多