在 Python 中用 nan 替换浮点列中的点
Posted
技术标签:
【中文标题】在 Python 中用 nan 替换浮点列中的点【英文标题】:Replace dots in a float column with nan in Python 【发布时间】:2018-04-18 07:28:06 【问题描述】:我有一个这样的数据框 df
df = pd.DataFrame([
'Name': 'Chris', 'Item Purchased': 'Sponge', 'Cost': 22.50,
'Name': 'Kevyn', 'Item Purchased': 'Kitty Litter', 'Cost': '.........',
'Name': 'Filip', 'Item Purchased': 'Spoon', 'Cost': '...'],
index=['Store 1', 'Store 1', 'Store 2'])
我想将“成本”列中的缺失值替换为 np.nan
。到目前为止,我已经尝试过:
df['Cost']=df['Cost'].str.replace("\.\.+", np.nan)
和
df['Cost']=re.sub('\.\.+',np.nan,df['Cost'])
但它们似乎都不能正常工作。请帮忙。
【问题讨论】:
df['Cost']=df['Cost'].replace(".+", np.NaN, regex=True)
@VanPeer 不知道您为什么要为 OP 提供不正确的解决方案。如果没有转义,.
匹配任何内容。
@cᴏʟᴅsᴘᴇᴇᴅ 它在这种情况下起作用.. 你所说的匹配任何东西是什么意思?
@VanPeer 我不敢相信,你是对的。我需要找出为什么会这样。试试re.sub('.+', '', '1234')
,你就会明白我的意思了。
@VanPeer 见***.com/questions/47132523/… :-)
【参考方案1】:
将DataFrame.replace
与regex=True
开关一起使用。
df = df.replace('\.+', np.nan, regex=True)
df
Cost Item Purchased Name
Store 1 22.5 Sponge Chris
Store 1 NaN Kitty Litter Kevyn
Store 2 NaN Spoon Filip
模式\.+
指定一个或多个点。您也可以使用[.]+
作为模式来达到同样的效果。
【讨论】:
以上是关于在 Python 中用 nan 替换浮点列中的点的主要内容,如果未能解决你的问题,请参考以下文章
Python Pandas 将一列中的 NaN 替换为第二列对应行的值
python 在DataFrame中用np.nan替换None
pandas:用列中的最后一个非 NaN 值替换 NaN [重复]