我正在比较两个数据帧的列,我得到的结果与单独比较元素的结果不同。这适用于比较"None“。
import pandas as pd
df1 = ["a", None, None, "b"]
df1 = pd.DataFrame(df1)
df2 = ["a", None, "c", "d"]
df2 = pd.DataFrame(df2)
print(df1[0] != df2[0]) #[1] is True, why ??
print(df1[0][1] != df2[0][1]) #[1] here it is False
print( None != None ) #this is False在比较数据帧时,这个"None“是不是被奇怪地转换了?
编辑:我已经找到了这个https://github.com/pandas-dev/pandas/issues/20442,但它没有给我任何明确的结果...这是功能吗?虫子?会不会被修复?
发布于 2021-01-15 23:04:24
我认为DataFrames中的None值被视为NA值,当您关注单个元素时,它们被视为常规的None值。df1.isna()显示了这一点。
发布于 2021-01-15 23:04:53
您将数据框视为一维数组,但事实并非如此。当您打印df1时,您会得到以下输出:
0
0 a
1 None
2 None
3 bdf1引用您的对象。df1[0]引用您的第一组数据
list(df1[0]) == ['a', None, None, 'b']
list(df2[0]) == ["a", None, "c", "d"]从上面我们可以简单地假设:
df1[0][1] == None
df2[0][1] == None这就是为什么你的第二个print是假的。None != None确实是False。尽管您使用一维数组初始化数据框,但pandas创建的对象可以使用更复杂的数据集。
https://stackoverflow.com/questions/65737847
复制相似问题