我在数据框中有一个包含所有字符串的列,其中一些是TAG(机器/计算机),另外一些则是ID,其他是ID。我希望将所有ID的字符串更改为“ ID”,而不是数字字符串。
type(df.columnOne[1])
str
这是我的df列的样子:
df
columnOne
0 TAG
1 1115268
2 13452
3 system
4 TAG
5 355511
6 95221543
7 5124
8 111333544
9 TAG
10 local
11 434312
所需的输出:
df
columnOne
0 TAG
1 ID
2 ID
3 system
4 TAG
5 ID
6 ID
7 ID
8 ID
9 TAG
10 Local
11 ID
我通常会在不等于TAG或系统或Local而不是ID的地方做一些事情。但是名称总是在变化。
答案 0 :(得分:5)
如果我理解正确,则可以使用str.isnumeric
:
df.loc[df.columnOne.str.isnumeric(),'columnOne'] = 'ID'
>>> df
columnOne
0 TAG
1 ID
2 ID
3 system
4 TAG
5 ID
6 ID
7 ID
8 ID
9 TAG
10 local
11 ID
答案 1 :(得分:4)
尝试替换
df.columnOne = df.columnOne.str.replace('\d+', 'ID')
0 TAG
1 ID
2 ID
3 system
4 TAG
5 ID
6 ID
7 ID
8 ID
9 TAG
10 local
11 ID
答案 2 :(得分:3)
正如RafaelC在评论中提到的,如果包含float
df.loc[pd.to_numeric(df.columnOne,errors='coerce').notna(),'columnOne']='ID'
df
Out[536]:
columnOne
0 TAG
1 ID
2 ID
3 system
4 TAG
5 ID
6 ID
7 ID
8 ID
9 TAG
10 local
11 ID
答案 3 :(得分:1)
应用解决方案:
(仅出于完整性考虑,Site Date Mon Day Yr Szn SznYr A B C D E F G
B0001 7/29/97 7 29 1997 Summer 1997-Summer 0 0 0 0 0 0 0
B0001 7/29/97 7 29 1997 Summer 1997-Summer 0 0 1 0 0 0 0
B0001 7/29/97 7 29 1997 Summer 1997-Summer 0 0 0 3 0 0 0
B0001 7/29/97 7 29 1997 Summer 1997-Summer 0 0 0 0 0 0 10
B0002 7/28/97 7 28 1997 Summer 1997-Summer 0 0 0 0 5 0 0
B0002 7/28/97 7 28 1997 Summer 1997-Summer 0 0 0 0 0 0 0
B0002 7/28/97 7 28 1997 Summer 1997-Summer 0 0 0 0 0 6 0
B0002 7/28/97 7 28 1997 Summer 1997-Summer 0 0 0 0 0 0 0
B0002 7/28/97 7 28 1997 Summer 1997-Summer 0 0 0 0 0 0 0
B0002 7/28/97 7 28 1997 Summer 1997-Summer 0 0 0 0 0 0 8
B0002 6/28/07 6 28 2007 Summer 2007-Summer 0 3 6 1 7 0 1
和str.replace
解决方案要简单得多)
str.isnumeric