当前位置: 首页 > 面试题库 >

通过使用正则表达式将值替换为np.nan

岑畅
2023-03-14
问题内容

我有一个数据框如下:

data1 = {"first":["alice", "bob", "carol"],
         "last_huge":["foo", "bar", "baz"]}
df = pd.DataFrame(data1)

例如,我想将所有字符’o’替换为’a’:

那我做

df.replace({"o":"a"},regex=True)
Out[668]: 
   first last
0  alice  faa
1    bab  bar
2  caral  baz

它给我我需要的东西。

但是 ,当我要将’o’替换为时np.nan,它将整个html" target="_blank">字符串更改为np.nan 熊猫的文件有什么解释吗?
我可以通过源代码找到一些信息。

更多信息:(它将整个字符串更改为np.nan

df.replace({"o":np.nan},regex=True)
Out[669]: 
   first last
0  alice  NaN
1    NaN  bar
2    NaN  baz

问题答案:

NaN始终用作失踪的占位符,当用“
missing”替换字符串的一部分时,这仅意味着整个条目已被破坏。我听说过这种叫做NaN污染的方法(或类似方法,我会看看是否能找到一些参考文献),因为如果NaN接触到,数据就会受到损害。

也就是说,并非总是如此:

In [11]: s = pd.Series([1, 2, np.nan, 4])

In [12]: s.sum()
Out[12]: 7.0

In [13]: s.sum(skipna=False)
Out[13]: nan

在某些语言中,您会把skipna = False视为默认行为,有些人激烈地认为NaN应该 始终 污染所有数据。熊猫采取了更为务实的态度。

真正的问题是,对于NaN,您希望它做什么?



 类似资料:
  • 问题内容: 我已将一些定价数据读入pandas数据框中,其值显示为: 我想将其简化为数字值。我知道我可以遍历并应用正则表达式 到每个字段,然后将结果列表重新组合在一起,但是有没有一种循环的方式? 谢谢 问题答案: 您可以使用删除所有非数字: regex101演示

  • Change is inevitable, except from vending machines. — Robert C. Gallagher Puppet 的 regsubst 函数提供了一种处理文本的简单方法, 用于在字符串中查找和替换,或者从字符串提取匹配的模式。 例如,我们通常需要对从 facter 或者从外部程序获得的数据做这样的处理。 在本例中将会看到如何使用 regsubst 提

  • 问题内容: 我需要替换字符串的一部分。我浏览了Python文档并发现了re.sub。 我期望这能打印,而不是“酒吧”。 谁能告诉我我做错了什么? 问题答案: 除了捕获要 替换 的零件外,您还可以捕获要 保留 的零件,然后使用引用对其进行引用以将它们包括在替换字符串中。 尝试以下方法: 另外,假设这是HTML,则应考虑使用HTML解析器来执行此任务,例如Beautiful Soup 。

  • 通过好奇心,有没有办法用Java Stream编写它?

  • 问题内容: 我有这个字符串: 现在,我想在每个数字之前添加String num:。 因此结果必须是: 这也必须工作: 用于搜索数字的正则表达式是:[0-9]+ 但是我想用num:+ [匹配的子字符串]替换匹配的子字符串。 我现在写了一个带有数字的示例,但另一个示例可以是:在每个电子邮件地址之前添加 ·Email found·: 问题答案: 利用分组。您可以使用括号(并)定义组,并通过组索引$n在哪

  • 我正在尝试将类型的所有字符串更改为。如果任何字符是大小写,它也应该有效。请注意,不应更改为。 我尝试过使用正则表达式这样做: 输出应该是,但它是,因为它也替换了所有字符,而不是保留字符并在点后放置空格。 有人知道用Python怎么做这个吗? 编辑:我试图在两个句子之间加一个空格。但是,我不能使用<code>str。替换,因为在这种情况下它也会添加一个空格,比如变成。这不是我想要的。我试着做正则表达