如何在熊猫数据框列中提取字符串的各个部分

林恩

我有一个数据框df,我希望列中的值进行特定的分隔以显示第一个单词和数字以及其“ T”值。我想用“-”分隔 的第一个“单词”及其#T值。除“ Azure”情况外第一个单词由“ _”分隔

这很棘手,因为某些#T值用'-'分隔一些#T值用'_'分隔-12T中的值中的一个,以及_14T在另一个值我想维持类型列中的原始值

样本数据

data = {'type': ['Azure_Standard_E64is_v4_SPECIAL_DB-A.0', 'Azure_Standard_E64is_v4_SPECIAL_DB-A.0', 'Hello-HEL-HE-A6123-123A-12T_TYPE-v.A', 'Hello-HEL-HE-A6123-123A-12T_TYPE-v.E', 'Hello-HEL-HE-A6123-123A-50T_TYPE-v.C', 'Hello-HEL-HE-A6123-123A-50T_TYPE-v.A', 'Happy-HAP-HA-R650-570A-90T_version-v.A', 'Kind-KIN-KI-T490-NET_14T-A.0', 'Kind-KIN-KI-T490-NET_14T-A.0', 'AY14.5-fyy-FY-R770-256G-6.4T-R1-v.A', 'AY14.5-fyy-FY-R770-256G-6.4T-R1-v.A'], 'free': [6, 5, 10, 5, 1, 2, 10, 7, 6, 3, 0], 'use': [1, 1, 10, 1, 4, 1, 0, 4, 3, 0, 20], 'total': [7, 6, 20, 6, 5, 1, 10, 3, 2, 3, 20]}
df = pd.DataFrame(data)


                                      type  free  use  total
0   Azure_Standard_E64is_v4_SPECIAL_DB-A.0     6    1      7
1   Azure_Standard_E64is_v4_SPECIAL_DB-A.0     5    1      6
2     Hello-HEL-HE-A6123-123A-12T_TYPE-v.A    10   10     20
3     Hello-HEL-HE-A6123-123A-12T_TYPE-v.E     5    1      6
4     Hello-HEL-HE-A6123-123A-50T_TYPE-v.C     1    4      5
5     Hello-HEL-HE-A6123-123A-50T_TYPE-v.A     2    1      1
6   Happy-HAP-HA-R650-570A-90T_version-v.A    10    0     10
7             Kind-KIN-KI-T490-NET_14T-A.0     7    4      3
8             Kind-KIN-KI-T490-NET_14T-A.0     6    3      2
9      AY14.5-fyy-FY-R770-256G-6.4T-R1-v.A     3    0      3
10     AY14.5-fyy-FY-R770-256G-6.4T-R1-v.A     0   20     20

期望的:

   Name                                          type                free   use  total
  
   Azure_Standard_E64is_v4_SPECIAL_DB-A.0        Azure               6       1    7       
   Azure_Standard_E64is_v4_SPECIAL_DB-A.0        Azure               5       1    6                                       
   Hello-HEL-HE-A6123-123A-12T_TYPE-v.A          Hello   12T         10      10  20
   Hello-HEL-HE-A6123-123A-12T_TYPE-v.E          Hello   12T         5       1    6
   Hello-HEL-HE-A6123-123A-50T_TYPE-v.C          Hello   50T         1       4    5
   Hello-HEL-HE-A6123-123A-50T_TYPE-v.A          Hello   50T         2       1    1
   Happy-HAP-HA-R650-570A-90T_version-v.A        Happy   90T         10      0   10
   Kind-KIN-KI-T490-NET_14T-A.0                  Kind    14T         7      4    3
   Kind-KIN-KI-T490-NET_14T-A.0                  Kind    14T         6      3    2
   AY14.5-fyy-FY-R770-256G-6.4T-R1-v.A           AY14.5  6.4T        3      0    3
   AY14.5-fyy-FY-R770-256G-6.4T-R1-v.A           AY14.5  6.4T        0      20   20
        

正在做:

df['type']= df['type'].str.extract(r'(^\w+.\d|^\w+)')+' '+df['type'].str.extract(r'(\d.\d+T|\d+T)')

此操作在下面进行但是'AZURE'值消失,并且不保留原始值我仍在对此进行研究,我们将为您提供任何帮助。

耶斯列尔

您可以使用Series.str.replaceSeries.str.cat和最后加Series.str.strip,也加入expand=FalseSeries.str.extractSeries

对于新列,使用第二个位置DataFrame.insert

s = (df['type'].str.replace('_','-')
               .str.extract(r'(^\w+.\d|^\w+)', expand=False)
               .str.cat(df['type'].str.extract(r'(\d.\d+T|\d+T)', expand=False), 
                        sep=' ', 
                        na_rep='')
               .str.strip())

感谢@Trenton McKinney提供的另一种解决方案-拆分值并获取列表的第一个值:

s = (df['type'].str.split('_|-')
               .str[0]
               .str.cat(df['type'].str.extract(r'(\d.\d+T|\d+T)', expand=False), 
                        sep=' ', 
                        na_rep='')
               .str.strip())

df = df.rename(columns={'type': 'Name'})
df.insert(1, 'type', s)
print (df)
                                      Name         type  free  use  total
0   Azure_Standard_E64is_v4_SPECIAL_DB-A.0        Azure     6    1      7
1   Azure_Standard_E64is_v4_SPECIAL_DB-A.0        Azure     5    1      6
2     Hello-HEL-HE-A6123-123A-12T_TYPE-v.A    Hello 12T    10   10     20
3     Hello-HEL-HE-A6123-123A-12T_TYPE-v.E    Hello 12T     5    1      6
4     Hello-HEL-HE-A6123-123A-50T_TYPE-v.C    Hello 50T     1    4      5
5     Hello-HEL-HE-A6123-123A-50T_TYPE-v.A    Hello 50T     2    1      1
6   Happy-HAP-HA-R650-570A-90T_version-v.A    Happy 90T    10    0     10
7             Kind-KIN-KI-T490-NET_14T-A.0     Kind 14T     7    4      3
8             Kind-KIN-KI-T490-NET_14T-A.0     Kind 14T     6    3      2
9      AY14.5-fyy-FY-R770-256G-6.4T-R1-v.A  AY14.5 6.4T     3    0      3
10     AY14.5-fyy-FY-R770-256G-6.4T-R1-v.A  AY14.5 6.4T     0   20     20

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在pandas数据框中的列的所有行中提取字符串中的大写单词?

来自分类Dev

从字符串javascript中提取字符串的各个部分

来自分类Dev

如何从数据框中的列中提取字符串模式,并创建一个包含提取的字符串的新数据框列?

来自分类Dev

如何从熊猫数据框中的可变长度列中提取子字符串?

来自分类Dev

从数据框中提取字符串

来自分类Dev

如何在蜂巢中提取字符串的一部分

来自分类Dev

如何在RegEx中提取字符串的一部分

来自分类Dev

如何在Java中提取字符串的特定部分

来自分类Dev

从数据框的列中提取字符串,然后使用该字符串添加新列

来自分类Dev

如何在R中提取字符串

来自分类Dev

如何在Android中提取字符串变量?

来自分类Dev

如何使用正则表达式提取字符串的各个部分

来自分类Dev

如何在熊猫中从列表中提取数据作为字符串,并按值选择数据?

来自分类Dev

如何从字符串中提取字符串

来自分类Dev

Python从数据框列中提取未知字符串

来自分类Dev

如何在数据框列中提取所有匹配的模式(字符串中的单词)?

来自分类Dev

如何在Windows批处理文件中提取字符串的一部分?

来自分类Dev

熊猫:根据从旧数据框中的字符串中提取的数据创建新的数据框

来自分类Dev

在python中提取字符串的特定部分

来自分类Dev

在C#中提取字符串的特定部分

来自分类Dev

如何基于if-else条件从熊猫元组索引中提取字符串?

来自分类Dev

如何使用 regex.match 在 c# 中提取字符串的特定部分?

来自分类Dev

如何从字符串中提取字符?

来自分类Dev

从字符串中提取字符

来自分类Dev

无法从 df 列中提取字符串

来自分类Dev

如何从字符串中提取字典形式?

来自分类Dev

如何从日志文件中提取字符串(日期)

来自分类Dev

如何从响应中提取字符串?

来自分类Dev

如何使用jq从数组中提取字符串?

Related 相关文章

  1. 1

    如何在pandas数据框中的列的所有行中提取字符串中的大写单词?

  2. 2

    从字符串javascript中提取字符串的各个部分

  3. 3

    如何从数据框中的列中提取字符串模式,并创建一个包含提取的字符串的新数据框列?

  4. 4

    如何从熊猫数据框中的可变长度列中提取子字符串?

  5. 5

    从数据框中提取字符串

  6. 6

    如何在蜂巢中提取字符串的一部分

  7. 7

    如何在RegEx中提取字符串的一部分

  8. 8

    如何在Java中提取字符串的特定部分

  9. 9

    从数据框的列中提取字符串,然后使用该字符串添加新列

  10. 10

    如何在R中提取字符串

  11. 11

    如何在Android中提取字符串变量?

  12. 12

    如何使用正则表达式提取字符串的各个部分

  13. 13

    如何在熊猫中从列表中提取数据作为字符串,并按值选择数据?

  14. 14

    如何从字符串中提取字符串

  15. 15

    Python从数据框列中提取未知字符串

  16. 16

    如何在数据框列中提取所有匹配的模式(字符串中的单词)?

  17. 17

    如何在Windows批处理文件中提取字符串的一部分?

  18. 18

    熊猫:根据从旧数据框中的字符串中提取的数据创建新的数据框

  19. 19

    在python中提取字符串的特定部分

  20. 20

    在C#中提取字符串的特定部分

  21. 21

    如何基于if-else条件从熊猫元组索引中提取字符串?

  22. 22

    如何使用 regex.match 在 c# 中提取字符串的特定部分?

  23. 23

    如何从字符串中提取字符?

  24. 24

    从字符串中提取字符

  25. 25

    无法从 df 列中提取字符串

  26. 26

    如何从字符串中提取字典形式?

  27. 27

    如何从日志文件中提取字符串(日期)

  28. 28

    如何从响应中提取字符串?

  29. 29

    如何使用jq从数组中提取字符串?

热门标签

归档