Loi*_*ler 3 python string dataframe pandas
这是一个奇怪的具体问题,但是
如果我有一个 pandas 数据框,如下所示:
...
8 0
9 0
10 0
11 0
12 0
13 Dogs
14 Cats
...
Run Code Online (Sandbox Code Playgroud)
我需要它来查看所有字符串类型并将它们更改为 1,所以:
...
8 0
9 0
10 0
11 0
12 0
13 1
14 1
...
Run Code Online (Sandbox Code Playgroud)
有没有办法让 df.replace() 查看字符串类型?
谢谢!
只要列中的其他值都是有效的数值并且还没有任何NaN值,您就可以使用to_numeric来将字符串值强制转换为数值,在本例中为NaN。
然后您可以替换NaN为1,但由于 的引入NaN,dtype被更改为因此我们需要使用来float区分:dtypeintastype
In [6]: \n# read the data into our df\nimport pandas as pd\nimport io\n\xe2\x80\x8b\nt="""8 0\n9 0\n10 0\n11 0\n12 0\n13 Dogs\n14 Cats"""\ndf = pd.read_csv(io.StringIO(t), delim_whitespace=True, header=None)\ndf\n\nOut[6]:\n 0 1\n0 8 0\n1 9 0\n2 10 0\n3 11 0\n4 12 0\n5 13 Dogs\n6 14 Cats\nRun Code Online (Sandbox Code Playgroud)\n\n现在转换字符串,将其替换为1并将 Series dtype 转换回 int:
In [7]:\ndf[1] = pd.to_numeric(df[1], errors=\'coerce\').fillna(1).astype(int)\ndf\n\nOut[7]:\n 0 1\n0 8 0\n1 9 0\n2 10 0\n3 11 0\n4 12 0\n5 13 1\n6 14 1\nRun Code Online (Sandbox Code Playgroud)\n