我的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
执行此操作的最佳方法是什么?
答案 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