如果将熊猫数据帧df1
定义为:
df1 = pd.DataFrame({'a': [ 1, 2], 'b': [3, 4]})
数据帧df2
的大小、列名和索引相同,但在某个地方都有NA值
方法A:
nan_locations = np.where(df2.isnull())
df1.values[nan_locations] = np.nan
方法B:
df1[df2.isnull()] = np.nan
用NA覆盖df1
中的值,NA来自df2
中相同的位置。但是,如果我对从Excel文件读取的数据帧执行相同的操作,那么方法a并不总是有效的。有人能解释一下为什么会这样吗?你知道吗
这可能与第一个数据帧的数据类型有关,其值需要被覆盖。当数据帧是混合数据类型时,
values
属性返回一个数据类型升级的数据数组(doc),它看起来是一个副本。因此,对该副本的赋值将丢失。你知道吗下面是一个“简单”数据帧的示例,其中方法a和B都起作用:
另一方面,这个看似相似的数据帧只适用于方法B:
因为
df1
的数据类型是:因此,Excel文件中的数据可能会导致数据框中包含混合数据类型。最好使用适当的索引器来更新内容,而不是直接操纵低级值表示。你知道吗
相关问题 更多 >
编程相关推荐