gpt4 book ai didi

即使列丢失,python 切片也不会给出键错误

转载 作者:行者123 更新时间:2023-12-01 03:00:20 25 4
gpt4 key购买 nike

我有一个带有 10 个键的 pandas 数据框。如果我尝试访问不存在的列,即使这样它也会返回 NaN。我本来以为会出现 KeyError。 pandas 如何无法识别缺失的列?

在下面的示例中,vendor_id 是数据帧中的有效列。数据集中不存在另一列。

final_feature.ix[:,['vendor_id','this column is absent']]
Out[1017]:
vendor_id this column is absent
0 434236 NaN

type(final_feature)
Out[1016]: pandas.core.frame.DataFrame

编辑 1:验证不存在空值

print (final_feature1.isnull().values.any())

最佳答案

这是预期的行为,是由于 setting with enlargement 功能造成的

In [15]:
df = pd.DataFrame(np.random.randn(5,3), columns=list('abc'))
df.ix[:,['a','d']]

Out[15]:
a d
0 -1.164349 NaN
1 0.400116 NaN
2 -0.599496 NaN
3 0.186837 NaN
4 0.385656 NaN

如果你尝试df['d']df[['a','d']]那么你会得到一个KeyError

实际上,您正在做的是重新索引,事实上,使用 ix 时该列不存在。没关系,你只会得到一列 NaN

使用 loc 观察到相同的行为:

In [24]:
df.loc[:,['a','d']]

Out[24]:
a d
0 -1.164349 NaN
1 0.400116 NaN
2 -0.599496 NaN
3 0.186837 NaN
4 0.385656 NaN

当您不使用ix时或loc并尝试做df['d']如果您正在尝试对特定列或列列表建立索引,则除非您分配给新列,否则不会预期会扩大:例如df['d'] = some_new_vals

为了防止这种情况,您可以使用 isin 验证您的列表。与列:

In [26]:
valid_cols = df.columns.isin(['a','d'])
df.ix[:, valid_cols]

Out[26]:
a
0 -1.164349
1 0.400116
2 -0.599496
3 0.186837
4 0.385656

现在您只会看到存在的列,此外,如果您拼写错误任何列,它也会防止这种情况发生

关于即使列丢失,python 切片也不会给出键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43911115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com