我想用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”上移一位,然后删除其余行底部的所有多余数据,以使所有列的长度再次相等。 无论如何要这样做? 问题答案: