【问题标题】:Convert multiple columns to string in pandas dataframe在熊猫数据框中将多列转换为字符串
【发布时间】:2018-11-23 15:13:35
【问题描述】:

我有一个具有不同数据类型的 pandas 数据框。我想将数据框中的多列转换为字符串类型。我已经为每一列单独做了,但想知道是否有有效的方法?

所以目前我正在做这样的事情:

repair['SCENARIO']=repair['SCENARIO'].astype(str)

repair['SERVICE_TYPE']= repair['SERVICE_TYPE'].astype(str)

我想要一个可以帮助我传递多列并将它们转换为字符串的函数。

【问题讨论】:

    标签: python python-2.7 pandas


    【解决方案1】:

    要将multiple 列转换为字符串,请在上述命令中包含一个列表 列:

    df[['one', 'two', 'three']] = df[['one', 'two', 'three']].astype(str)
    # add as many column names as you like.
    

    这意味着一种转换all列的方法是构造这样的列列表:

    all_columns = list(df) # Creates list of all column headers
    df[all_columns] = df[all_columns].astype(str)
    

    注意,后者也可以直接完成(见 cmets)。

    【讨论】:

    • 对于所有列,df = df.astype(str) 怎么样?
    • 是的,也可以,绝对 - 我刚刚发布了这个解决方案来坚持列表的概念
    • 谢谢 sudonym... 我实际上是在寻找类似函数的东西,它可以在数据框中获取列并将它们转换为字符串。尽管第一个解决方案完美运行并且我确实实现了它,但我应该能够根据需要更改列名。
    • 两者在性能上有区别吗?我尝试了df = df.astype(str) shape (50000, 23000),但它崩溃了(在交互模式下)。谢谢
    • 想知道如果列列表只有一个元素,为什么这不起作用...
    【解决方案2】:

    你也可以使用列表推导:

    df = [df[col_name].astype(str) for col_name in df.columns]
    

    您还可以插入一个条件来测试是否应转换列 - 例如:

    df = [df[col_name].astype(str) for col_name in df.columns if 'to_str' in col_name]
    

    【讨论】:

    • 这些解决方案用列表覆盖你的 pandas 数据框
    【解决方案3】:

    我知道这是一个老问题,但我一直在寻找一种方法来将所有具有 object dtype 的列转换为字符串,作为我在 rpy2 中发现的错误的解决方法。我正在使用大型数据框,因此不想明确列出每一列。这对我来说似乎很有效,所以我想我会分享以防它对其他人有所帮助。

    stringcols = df.select_dtypes(include='object').columns
    df[stringcols] = df[stringcols].fillna('').astype(str)
    

    “fillna('')”通过替换为空字符串来防止 NaN 条目转换为字符串 'nan'。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      • 2020-09-10
      相关资源
      最近更新 更多