如何剥离字符串并替换DataFrame中的现有元素

时间:2018-04-11 23:19:00

标签: python string pandas

我的df如下:

Index  Site     Name
  0    Site_1   Tom
  1    Site_2   Tom
  2    Site_4   Jack
  3    Site_8   Rose
  5    Site_11  Marrie
  6    Site_12  Marrie
  7    Site_21  Jacob
  8    Site_34  Jacob

我想剥离'Site_',只留下“网站”列中的数字,如下所示:

Index   Site     Name
  0      1       Tom
  1      2       Tom
  2      4       Jack
  3      8       Rose
  5      11      Marrie
  6      12      Marrie
  7      21      Jacob
  8      34      Jacob

执行此操作的最佳方法是什么?

5 个答案:

答案 0 :(得分:1)

使用pd.Series.str.extract

这会生成一个包含更新列的副本

df.assign(Site=df.Site.str.extract('\D+(\d+)', expand=False))

      Site    Name
Index             
0        1     Tom
1        2     Tom
2        4    Jack
3        8    Rose
5       11  Marrie
6       12  Marrie
7       21   Jacob
8       34   Jacob

要保留结果,请重新分配数据框名称

df = df.assign(Site=df.Site.str.extract('\D+(\d+)', expand=False))

使用pd.Series.str.split

df.assign(Site=df.Site.str.split('_', 1).str[1])

替代

更新而不是制作副本

df.update(df.Site.str.extract('\D+(\d+)', expand=False))
# Or
# df.update(df.Site.str.split('_', 1).str[1])
df

      Site    Name
Index             
0        1     Tom
1        2     Tom
2        4    Jack
3        8    Rose
5       11  Marrie
6       12  Marrie
7       21   Jacob
8       34   Jacob

答案 1 :(得分:0)

使数组由您想要的名称组成。然后打电话 yourarray = pd.DataFrame(yourpd,columns = yournamearray)

答案 2 :(得分:0)

使用.apply()将函数应用于系列中的每个元素:

df['Site Name'] = df['Site Name'].apply(lambda x: x.split('_')[-1])

答案 3 :(得分:0)

只需在列上调用replace即可替换“Site _”的所有实例:

df['Site'] = df['Site'].str.replace('Site_', '')

答案 4 :(得分:0)

您可以使用您想要的(strip方法)

>>> df["Site"] = df.Site.str.strip("Site_")

输出

Index   Site     Name
  0      1       Tom
  1      2       Tom
  2      4       Jack
  3      8       Rose
  5      11      Marrie
  6      12      Marrie
  7      21      Jacob
  8      34      Jacob