【问题标题】:remove one charachter from a speficic column in df pandas从 df pandas 的特定列中删除一个字符
【发布时间】:2022-11-26 14:49:22
【问题描述】:

我有一个带有一列的 df,其中一些值有 ... 和一些 .. 而有些没有点。

 Type    range
    Mike    10..13
    Ni      3..4
    NANA    2...3
    Gi      2

所需的输出应该是这样的

Type    range
Mike    10
Mike    11
Mike    12
MIke    13    
Ni      3
Ni      4
NANA    2
NANA    3
Gi      2

圆点代表数字之间的范围(包括结束数字)。

我应该如何在熊猫中做到这一点?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    首先将字符串解析为列表,然后解析explode

    import re
    def str_to_list(s):
        if not s: return []
        nums = re.split('.{2,3}', s)
        if len(nums) == 1:
            return nums
        return list(range(int(nums[0]), int(nums[1]) + 1))
    
    df['range'] = df['range'].map(str_to_list)
    df.explode('range')
    
       Type range
    0  Mike    10
    0  Mike    11
    0  Mike    12
    0  Mike    13
    1    Ni     3
    1    Ni     4
    2  NANA     2
    2  NANA     3
    3    Gi     2
    

    【讨论】:

      【解决方案2】:

      你也可以,试试这个:

      df.set_index('Type')['range'].str.split('.+').explode()
      

      【讨论】:

        猜你喜欢
        • 2023-02-01
        • 2023-03-07
        • 1970-01-01
        • 2021-01-04
        • 1970-01-01
        • 2022-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多