【问题标题】:How do I deconcatenate or unconcatenate a string value in a pandas dataframe?如何在 pandas 数据框中解连接或取消连接字符串值?
【发布时间】:2021-01-22 13:41:29
【问题描述】:

我是 python 新手,想了解如何使用数据帧

我有一个数据框-

 desc13month
Out[45]: 
                                            OutputValues  CntOutputValues
0                                  12-99-Annual (AE)                  217
1             21-581-Ineligible  Services(IPS)                        210
2      125-99-Annual (AE),126-22-Jermaine (JE)                        196
3                                  22-99-Annual (AE)                  181
4                                  21-50-Prime (PE)                  169

我希望 OutputValues 列未连接。如果您注意到,例如“Annual”的最后一个字符串取决于第二个字符串 99。如果它是 22,它会更改为 Jermaine。有时可能会有多个,就像我们在第 2 行看到的那样。我的最终输出应该指示这些列和一个附加具有最后一个字符串的列

插图-

desc13month
Out[45]: 
                                            OutputValues  CntOutputValues   final
0                                  12-99-Annual (AE)                  217   Annual (AE)
1             21-581-Ineligible  Services(IPS)                        210   Ineligible  Services(IPS) 
2      125-99-Annual (AE),126-22-Jermaine (JE)                        196   Annual (AE),Jermaine (JE) 
3                                  22-99-Annual (AE)                  181   Annual (AE)
4                                  21-50-Prime (PE)                   169   Prime (PE)

【问题讨论】:

    标签: python pandas string concatenation


    【解决方案1】:

    IIUC,我们试试Series.str.replace

    df['final'] = df['OutputValues'].str.replace(r'\d+-\d+-', '')
    

                                  OutputValues  CntOutputValues                      final
    0                        12-99-Annual (AE)              217                Annual (AE)
    1         21-581-Ineligible  Services(IPS)              210  Ineligible  Services(IPS)
    2  125-99-Annual (AE),126-22-Jermaine (JE)              196  Annual (AE),Jermaine (JE)
    3                        22-99-Annual (AE)              181                Annual (AE)
    4                         21-50-Prime (PE)              169                 Prime (PE)
    

    【讨论】:

      【解决方案2】:

      您的问题有两个部分,一个是处理字符串,另一个是将其应用于数据框。 对于处理字符串,如果模式保持不变意味着您确定每个字符串都是数字-数字-字符并且多个值用“,”分隔,那么您可以使用类似以下函数:

      def deconcat(output_value):
          output_value = output_value.split(',')
          result = ''
          for part in output_value:
              _, _, item = part.split('-')
              result += item + ", "
          return result.rstrip(', ')
      

      该函数接受一个字符串,如果有多个值,则用','分割它,然后对于每个值,用'-'分割,并将第三部分添加到结果字符串中。

      现在您只需将此函数应用于整个数据框并创建新列:

      df['final'] = df.OutputValues.apply(deconcat)
      

      这会将函数应用于数据框中的每一行 OutputValues,并将生成的字符串添加到名为“final”的新列中。

      【讨论】:

        猜你喜欢
        • 2014-04-24
        • 2020-03-31
        • 2019-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-03
        相关资源
        最近更新 更多