首页 > 解决方案 > 如何在熊猫数据帧中使用 re.sub

问题描述

def not_value(x):
    if type(x) == str:
        re.sub(r'(\s+)', np.nan, x)
    else:
        pass

df_copy=df.copy()
df_copy.astype(str).applymap(lambda x: not_value(x))

我检查了数据框中的值是一个字符串。但它总是显示 TypeError:decode to str: need a bytes-like object, float found。它有什么问题?

谢谢你给我答复。

标签: pythondataframere

解决方案


如果你只是想用 替换某个字符串列中np.nan的值,当字符串的值全是空格时,你可以执行以下操作。如果它是否是空格并不重要,您可能需要编辑正则表达式:

import pandas as pd
import re
import numpy as np

d = {'col1': [1, 2], 'col2': [3, 4], 'col3': ['s ', '  ']}

df = pd.DataFrame(data=d)

spaces = df['col3'].str.contains('^\s+$')
df.loc[spaces, 'col3'] = np.nan
df

结果:

   col1  col2 col3
0     1     3   s 
1     2     4  NaN

推荐阅读