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

如何在熊猫数据框中将单元格设置为NaN

夔宏深
2023-03-14
问题内容

我想用NaN替换数据框列中的错误值。

mydata = {'x' : [10, 50, 18, 32, 47, 20], 'y' : ['12', '11', 'N/A', '13', '15', 'N/A']}
df = pd.DataFrame(mydata)

df[df.y == 'N/A']['y'] = np.nan

但是,最后一行失败,并发出警告,因为它正在处理df副本。那么,处理此问题的正确方法是什么?我已经见过许多使用iloc或ix的解决方案,但是在这里,我需要使用布尔条件。


问题答案:

只需使用replace

In [106]:
df.replace('N/A',np.NaN)

Out[106]:
    x    y
0  10   12
1  50   11
2  18  NaN
3  32   13
4  47   15
5  20  NaN

您正在尝试的操作称为链索引:http :
//pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-
copy

您可以loc用来确保对原始dF进行操作:

In [108]:
df.loc[df['y'] == 'N/A','y'] = np.nan
df

Out[108]:
    x    y
0  10   12
1  50   11
2  18  NaN
3  32   13
4  47   15
5  20  NaN


 类似资料:
  • 我有一个非常简单的问题。我想在熊猫数据帧的给定行的给定列中更改一个值。我尝试通过以下方式完成: 结果,我得到以下警告: 我对这个警告的解释是,通过使用列名称()和我实际上无法访问(引用)数据帧的所需单元格。相反,我创建了一个对象,它是“单元格”对象的副本,然后尝试更改与该“副本对象”关联的值。 我不明白的是,它似乎有效。尽管pandas给我写信说我试图修改副本,但我确实修改了原始数据帧。 我的问题

  • 问题内容: 我有一个数据框,我从其中删除了一些行。结果,我得到一个数据框架,其中的索引是这样的:我想将其重置为。我该怎么做? 以下似乎有效: 以下内容不起作用: 问题答案: 是您要寻找的。如果您不希望将其另存为列,请执行以下操作: 如果您不想重新分配:

  • 问题内容: 有没有一种方法可以根据我的个人喜好(即不按字母或数字排序,而是更像遵循某些约定)对熊猫数据框中的列进行重新排序? 简单的例子: 产生这个: 但是,我想这样: (请提供通用解决方案,而不是针对此情况。非常感谢。) 问题答案: 只需输入列名称即可自己选择订单。请注意双括号:

  • 问题内容: 我想知道是否有某种方式将所有DataFrame负数替换为零? 问题答案: 如果所有列都是数字列,则可以使用布尔索引: 对于更一般的情况,此答案显示了private方法: 使用类型,布尔索引似乎可以在单独的列上工作,但不能在整个数据帧上工作。因此,您可以执行以下操作: 更新: 与整个DataFrame上的作品进行比较:

  • 问题内容: 我需要在日期上将2个pandas数据框合并在一起,但是它们当前具有不同的日期类型。1是时间戳(从excel导入),另一个是。 有什么建议吗? 我已经尝试过了,但这仅适用于单个项目(例如),它不能让我应用于整个系列(例如)或数据框。 问题答案: 我从同事那里得到了一些帮助。 这似乎解决了上面发布的问题

  • 问题内容: 我有一个熊猫数据框。我想“落后”我的专栏之一。例如,这意味着将整个列“ gdp”上移一位,然后删除其余行底部的所有多余数据,以使所有列的长度再次相等。 无论如何要这样做? 问题答案: