gpt4 book ai didi

python - Pandas drop 方法在丢弃 NaN header 时表现不一致

转载 作者:行者123 更新时间:2023-11-28 16:25:41 24 4
gpt4 key购买 nike

我在尝试从表中删除 nan 列时遇到了问题。

这是按预期工作的示例:

import pandas as pd
import numpy as np

df1 = pd.DataFrame([[1, 2, 3], [4, 5, 6]],
columns=['A', 'B', 'C'],
index=['Foo', 'Bar'])

mapping1 = pd.DataFrame([['a', 'x'], ['b', 'y']],
index=['A', 'B'],
columns=['Test', 'Control'])

# rename the columns using the mapping file
df1.columns = mapping1.loc[df1.columns, 'Test']

从这里我们看到 df1 中的 C 列在映射文件中没有条目,因此该 header 被替换为 nan

# drop the nan column
df1.drop(np.nan, axis=1)

在这种情况下,调用 np.nan 找到最终 header 并将其丢弃。

但是,在下面的情况下,df.drop 不起作用:

# set up table
sample1 = np.random.randint(0, 10, size=3)
sample2 = np.random.randint(0, 5, size=3)
df2 = pd.DataFrame([sample1, sample2],
index=['sample1', 'sample2'],
columns=range(3))
mapping2 = pd.DataFrame(['foo']*2, index=range(2),
columns=['test'])

# assign columns using mapping file
df2.columns = mapping2.loc[df2.columns, 'test']

# try and drop the nan column
df2.drop(np.nan, axis=1)

nan 列仍然存在。

最佳答案

这可能是一个答案(来自 https://stackoverflow.com/a/16629125/5717589 ):

When index is unique, pandas use a hashtable to map key to value. When index is non-unique and sorted, pandas use binary search, when index is random ordered pandas need to check all the keys in the index.

所以,如果条目是唯一的,我认为 np.nan 会被散列。在非唯一情况下,pandas 比较值,但是:

np.nan == np.nan
Out[1]: False

更新

我想不可能通过标签访问 NaN 列。但它可以通过索引位置来实现。以下是删除带有空标签的列的解决方法:

notnull_col_idx = np.arange(len(df.columns))[~pd.isnull(df.columns)]
df = df.iloc[:, notnull_col_idx]

关于python - Pandas drop 方法在丢弃 NaN header 时表现不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36944750/

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