【问题标题】:python replace multiple values from all columns in dataframe pandaspython替换dataframe pandas中所有列的多个值
【发布时间】:2021-09-05 14:36:39
【问题描述】:

社区!提前致谢。我是 Victor,下面是我的表格示例的链接。

下面是表格的代码:

d = {'1978': ['10k', '20000'],
    '1979': ['30k', '2M'],
    '1980': ['60000', '20k'],
    '1981': ['10000', '1M'],
    '1982': ['15000', '70k'],
    '1983': ['12k', '8M']}
df = pd.DataFrame(data=d)

实际上,我正在工作的那个有 60 列和 200 行。但是,它是相同的结构。

我的目标是为许多列的所有行替换“k”为“000”和“M”为“000000”。

所以输出应该是:

我很挣扎,尝试了很多事情。我真的被困住了。

如果有人可以与我分享代码以获得所需的输出,我将不胜感激。再次感谢社区! :)

【问题讨论】:

    标签: python pandas replace multiple-value


    【解决方案1】:

    您可以将pandas.DataFrame.replace 与字典一起用作参数和regex=True

    new_df = df.replace({'k':'000', "M": "000000"}, regex=True)
    

    【讨论】:

    • 天啊!!非常感谢,成功了!!我真的很感激!谢谢!!
    【解决方案2】:

    您好,一个快速的解决方案是将列转换为字符串,进行字符替换,然后转换回 int 或 float。这可以逐列完成:

    import pandas as pd
    
    d = {'1978': ['10k', '20000'], '1979': ['30k', '2M'], '1980': ['60000', '20k'], '1981': ['10000', '1M'], '1982': ['15000', '70k'], '1983': ['12k', '8M']}
    df = pd.DataFrame(data=d)
    for col in df.columns:
        df[col] = (
            df[col].astype(str)
            .str.replace("k", "000")
            .str.replace("M", "000000")
            .astype(int)
        )
    

    或作为一个整体:

    df = (
       df.astype(str)
       .str.replace("k", "000")
       .str.replace("M", "000000")
       .astype(int)
    )
    

    【讨论】:

    • 嗨,塞尔格!!我实际上是在尝试准确地编写此代码!非常感谢您的时间和关注,它奏效了!!谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-03-29
    • 2015-10-09
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    相关资源
    最近更新 更多