gpt4 book ai didi

python - Pandas read_excel 干扰 na_values 和转换器错误?

转载 作者:行者123 更新时间:2023-11-28 22:27:42 28 4
gpt4 key购买 nike

我在使用 Pandas read_excel 函数时发现了一些奇怪的行为。我有一个电子表格的人为示例,如下所示:

Name    age weight
Bob 35 70
Alice 15 ...
Sam ... 65
Susan 92 63
Harold 42 ...

缺失值由“...”表示,我希望它们读作 NaN。我还想将重量转换为克。我的第一次尝试是:

df=pd.read_excel('test.xls',na_values='...',converters={'weight':lambda y:y*1000})

不幸的是,这首先应用了转换器函数,因此 Susan 和 Harold 的缺失权重不是三个点而是 3000 个点,这与给定的“na_value”条目不匹配,因此不会转换为 NaN。这是非常出乎意料的。

这是此功能的最佳行为是否有原因?

我在实现过程中是否做了明显错误的事情?

获得我想要的行为的最佳方式是什么?

最佳答案

转换器 在应用 na_values 之前运行,这就是您看到此行为的原因。 只需在您的转换器中添加一个条件即可捕获 weights 中的 ... 实例 - 就像添加一个手卷的na_values:

df = pd.read_excel("test.xls", 
na_values="...",
converters={"weight":lambda w: w*1000 if isinstance(w, int) else None})

print(df)

Name age weight
0 Bob 35.0 70000.0
1 Alice 15.0 NaN
2 Sam NaN 65000.0
3 Susan 92.0 63000.0
4 Harold 42.0 NaN

保留实际的 na_values 参数以确保 age 字段中的 ... 值也被转换。

关于python - Pandas read_excel 干扰 na_values 和转换器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43949543/

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