【问题标题】:special string formatting within a Series in PandasPandas 系列中的特殊字符串格式
【发布时间】:2017-06-05 11:37:24
【问题描述】:

我正在寻找Series.str.zfill(width) 方法的定制版本。此方法在字符串中添加零,以使字符串具有width 字符。我正在寻找可以做到这一点的东西,但可以使用任何字符(或字符序列),而不仅仅是 0。例如,根据需要从左侧添加“-”多次,以便字符串具有 width 字符。

【问题讨论】:

    标签: python python-3.x pandas string-formatting series


    【解决方案1】:

    我认为您正在寻找以widthfillchar 作为参数的Series.str.rjust

    在系列/索引中的字符串左侧填充额外的 字符。

    【讨论】:

      【解决方案2】:

      您可以在下面定义像left_fill 这样的自定义函数,并使用pandas.Series.apply 将其映射到整个系列。

      import pandas as pd
      
      s = pd.Series(['foo', 'bar', 'baz', 'apple'])
      
      def left_fill(string, char, length):
          while len(string) < length:
              string = char + string
          return string
      
      s.apply(left_fill, args = ('-', 5))
      

      但是,正如 cmets 中所述,您最好使用 pandas 内置的 rjust 方法而不是创建自己的方法!我的只是另一个性能较差的例子。

      【讨论】:

      • 如果存在矢量化方法,我们真的不应该提供apply 答案
      • 这只是另一种做事方式——我并没有声称我的方式更高效。我认为稍微看一下引擎盖并将其留在这里没有什么害处。
      • 对于小型数据集apply 会更快,但现有方法应该可以更好地扩展,虽然列表解析有时更快,只是对于熊猫用户来说,他们真的应该只使用apply 如果有没有其他选择,这非常罕见。如果他们自动考虑使用apply 解决问题而不是寻找矢量化方法IMO,它也会使用户感到困惑,因为我已经看到很多这样的用户代码,请随意将其留在这里,但这只是我的对此的看法
      猜你喜欢
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      相关资源
      最近更新 更多