to_numeric方法官网链接
- 需求:dataFrame列数据中有字符串,需要把字符串替换为NaN
- 效果图:
A B C D E F
a 0 1 2 3 4 5
b 6 7 welcome 9 10 11
c 12 13 to 15 16 17
d 18 19 China 21 22 23
e 24 25 你 27 28 29
f 30 31 32 6556 34 35
————————————————————转换如下——————————————————
A B C D E F
a 0 1 2.0 3 4 5
b 6 7 NaN 9 10 11
c 12 13 NaN 15 16 17
d 18 19 NaN 21 22 23
e 24 25 NaN 27 28 29
f 30 31 32.0 6556 34 35
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams.update({'figure.max_open_warning': 0})
# 创建模拟数据
df = pd.DataFrame(np.arange(36).reshape(6, 6), index=list('abcdef'), columns=list('ABCDEF'))
print(df)
print(df.dtypes)
df.iloc[1, 2] = 'welcome'
df.iloc[2, 2] = 'to'
df.iloc[3, 2] = 'China'
df.iloc[4, 2] = '你'
df.iloc[5, 3] = ' 6556'
print(df)
print(df.dtypes)
print('———————————————转换如下———————————————————————')
# 第 2 列数据 字符串 set as NaN.
df.iloc[:, 2] = pd.to_numeric(df.iloc[:, 2], errors='coerce')
# 第 3 列数据 本身可以转为 int类型,则进行转换
df.iloc[:, 3] = pd.to_numeric(df.iloc[:, 3], downcast='integer')
print(df)
print(df.dtypes)
# data_raw.replace('', np.nan, inplace=True)