【问题标题】:How to loop on value in a data frame and insert zeros in the middle如何循环数据框中的值并在中间插入零
【发布时间】:2022-11-02 21:58:04
【问题描述】:

我在“ACCOUNT_N0”列中有一个值,它由 14 位数字组成我希望它们是 16 位数字,方法是在中间插入 2 个零,一个在第四位,另一个在第八位 例子: 这是值:33322288888888 输出:3330222088888888

我发现在数字的开头插入零,使用:

df['ACCOUNT_NO'].astype(str).str.zfill(16)

我想知道如何插入第 4 位和第 8 位

【问题讨论】:

  • 您想要中间有一个 0 还是想要像 3330222880888888 这样的第 4 和第 8 位置的 0?
  • 谢谢你回复我,是的,我想要 2 个零,一个在第 4 位,另一个在第 8 位,如下所示:3330222088888888

标签: python validation data-science data-analysis data-cleaning


【解决方案1】:

您可以创建一个函数来输入数字(作为字符串)并将“0”放在您想要的位置,如下所示:

def insert_0(text):
    tmp = text
    text = tmp[0:3] + '0' + tmp[3:7] + '0' + tmp[7:]
    return text

而不是主要使用 DataFrame.apply() 调用它,如下所示:

df['ACCOUNT_NO'] = df['ACCOUNT_NO'].astype(str)
df['ACCOUNT_NO'] = df['ACCOUNT_NO'].apply(insert_0)

希望它可能有用。

【讨论】:

    【解决方案2】:

    字符串是不可变的(您不能更改字符串的值)。因此,您可以使用切片将0s 添加到正确的位置,如下所示:

    my_str[:4] + "0" + my_str[4:8] + "0" + my_str[8:]
    

    在您的 pandas 数据框中,您可以像这样应用这个概念:

    df['ACCOUNT_NO'] = df['ACCOUNT_NO'].astype(str)
    df['ACCOUNT_NO'] = df['ACCOUNT_NO'].str[:4] + "0" + df['ACCOUNT_NO'].str[4:8] + "0" + df['ACCOUNT_NO'].str[8:]
    

    完整代码:

    df = pd.DataFrame(columns=["ACCOUNT_NO"])
    df["ACCOUNT_NO"] = ["33322288888888"]
    df['ACCOUNT_NO'] = df['ACCOUNT_NO'].astype(str)
    df['ACCOUNT_NO'] = df['ACCOUNT_NO'].str[:4] + "0" + df['ACCOUNT_NO'].str[4:8] + "0" + df['ACCOUNT_NO'].str[8:]
    

    输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      • 2021-11-24
      • 1970-01-01
      相关资源
      最近更新 更多