python pandas用常量替换所有数值列中的任何字符串值

j5fpnvbx  于 2023-11-20  发布在  Python
关注(0)|答案(1)|浏览(105)

作为数据清理的一部分,Dataset有100多个列,并希望检查是否有任何数值/浮点数列具有字符串值,并将其全部替换为常量数值。
数据类型:
| data1| col1| col2|左|中心|
| --|--|--|--|--|
| ABC|零点一二三| 234 | 678 |一百二十三|
| ABC| 0.1345| 678 | 900 | -0.456 |
| def| -0.454 |OVG|测试| 8.67|
| def|失败|NVT|测试| 六点九|
| def|失败| 890 | 900 | 532 |
将任何数字列中的任何字符串替换为-1111输出:
| data1| col1| col2|左|中心|
| --|--|--|--|--|
| ABC|零点一二三| 234 | 678 |一百二十三|
| ABC| 0.1345| 678 | 900 | -0.456 |
| def| -0.454 |-1111|-1111| 8.67|
| def|-1111|-1111|-1111| 六点九|
| def|-1111| 890 | 900 | 532 |
帮助在python pandas中编码

56lgkhnf

56lgkhnf1#

使用pd.to_numericapply

out = df.set_index('data1').apply(pd.to_numeric, errors='coerce')\
        .fillna(-1111).reset_index()

字符串
输出:

data1   col1        col2    left    center
0   abc     0.1230      234.0   678.0   -123.000
1   abc     0.1345      678.0   900.0   -0.456
2   def     -0.4540     -1111.0 -1111.0 8.670
3   def     -1111.0000  -1111.0 -1111.0 6.900
4   def     -1111.0000  890.0   900.0   532.000

示例代码

当询问有关数据类型的问题时,输入应该以代码而不是文本的形式提供。

import pandas as pd
data1 = {'data1': {0: 'abc', 1: 'abc', 2: 'def', 3: 'def', 4: 'def'}, 
         'col1': {0: '0.123', 1: '0.1345', 2: '-0.454', 3: 'fail', 4: 'fail'}, 
         'col2': {0: '234', 1: '678', 2: 'OVG', 3: 'NVT', 4: '890'}, 
         'left': {0: '678', 1: '900', 2: 'testing', 3: 'test', 4: '900'}, 
         'center': {0: -123.0, 1: -0.456, 2: 8.67, 3: 6.9, 4: 532.0}}
df = pd.DataFrame(data1)

相关问题