pandas对列数据进行处理(列数据字符串设置为NaN)|pandas.to_numeric

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)

你可能感兴趣的:(pandas)