【问题标题】:Pandas - Add leading "0" to string values so all values are equal lenPandas - 将前导“0”添加到字符串值,以便所有值都相等 len
【发布时间】:2015-10-20 18:07:33
【问题描述】:

我有一个专栏,code_x。我将其转换为.astype(str)。一些示例值为45362.0, 75345.0, 346157.0, 572575.0。我希望它们都是6位数。又名:045362, 075345, 346157, 572575

我正在尝试以下方法,但它不起作用: f3[df3['code_x'].str.len() == 7] = "0" + df3[df3['code_x'].str.len() == 7]['code_x']

建议?

【问题讨论】:

  • 你想右对齐他们加 0 到左边吗?
  • @AnandSKumar 我这么认为?我将更新原始问题以举例说明我想要什么。谢谢

标签: python string pandas


【解决方案1】:

即使我和@DSM 一起使用 zfill。但我认为使用 lamba 会使其更简洁易读。

In [1]: import pandas as pd

In [2]: df = pd.DataFrame([45362.0, 75345.0, 346157.0, 572575.0], columns=['code_x'])

In [3]: df.code_x.apply(lambda x: str(int(x)).zfill(6))
Out[3]: 
0    045362
1    075345
2    346157
3    572575
Name: code_x, dtype: object

注意:我们在转换为字符串之前将给定值转换为 int 以消除结果中的“.0”。

【讨论】:

    【解决方案2】:

    您可以使用Series.str.rjust 方法右对齐字符串值,并使用8 作为长度,0 作为填充值。示例 -

    df3['code_x'] = df3['code_x'].astype(str).str.rjust(8,'0')
    

    演示 -

    In [65]: df
    Out[65]:
            A
    0    blah
    1  supbla
    2       a
    
    In [69]: df['A'].str.rjust(6,'0')
    Out[69]:
    0    00blah
    1    supbla
    2    00000a
    Name: A, dtype: object
    

    【讨论】:

    • 哦,这很有意义。你知道我怎么能做到这一点并摆脱 .0 吗? .0 不在原始数字中,但在我将其转换为字符串后存在
    • 如果您从数字类型转换,您可以尝试转换为int,然后再使用astype() 转换为str。另一种方法是使用 str.slice
    • 我不认为我可以使用int,因为原来的集合中有一些NaNs。
    • df3['code_x'].astype(int) 错误:Cannot convert NA to integer
    • 很高兴能为您提供帮助! :-) 。如果您认为答案有帮助,我想请您接受一个答案(您认为最好的任何答案),通过单击答案左侧的勾号,这将对社区有所帮助。
    【解决方案3】:

    IIUC,您可以使用str.zfill,这意味着您不必按长度进行特殊情况:

    In [16]: ser
    Out[16]: 
    0     45362
    1     75345
    2    346157
    3    572575
    dtype: float64
    
    In [17]: ser.astype(str).str.zfill(8)
    Out[17]: 
    0    045362.0
    1    075345.0
    2    346157.0
    3    572575.0
    dtype: object
    

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 2012-12-09
      • 2018-11-09
      • 1970-01-01
      • 2016-02-09
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 2018-12-08
      相关资源
      最近更新 更多