这是一个奇怪的具体问题,但
如果我有一个看起来像的pandas数据框:
...
8 0
9 0
10 0
11 0
12 0
13 Dogs
14 Cats
...
我需要它来查看所有字符串类型并将它们更改为1,所以:
...
8 0
9 0
10 0
11 0
12 0
13 1
14 1
...
有没有办法让df.replace()看到字符串类型?
谢谢!
答案 0 :(得分:3)
只要列中的其他值都是有效数值并且已经没有NaN
值,您可以使用to_numeric
将字符串值强制为数值,在这种情况下NaN
。
然后,您可以将NaN
替换为1
,但由于引入了NaN
,dtype
已更改为float
,因此我们需要案例使用astype
的dtype
到int
:
In [6]:
# read the data into our df
import pandas as pd
import io
t="""8 0
9 0
10 0
11 0
12 0
13 Dogs
14 Cats"""
df = pd.read_csv(io.StringIO(t), delim_whitespace=True, header=None)
df
Out[6]:
0 1
0 8 0
1 9 0
2 10 0
3 11 0
4 12 0
5 13 Dogs
6 14 Cats
现在转换字符串,将其替换为1
并将Series dtype强制转换为int:
In [7]:
df[1] = pd.to_numeric(df[1], errors='coerce').fillna(1).astype(int)
df
Out[7]:
0 1
0 8 0
1 9 0
2 10 0
3 11 0
4 12 0
5 13 1
6 14 1