gpt4 book ai didi

python - Pandas:为什么 DataFrame.apply(f, axis=1) 在 DataFrame 为空时调用 f?

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:14 24 4
gpt4 key购买 nike

为什么 Pandas 的 DataFrame.apply 方法在 DataFrame 为空时调用正在应用的函数?

例如:

>>> import pandas as pd
>>> df = pd.DataFrame({"foo": []})
>>> df
Empty DataFrame
Columns: [foo]
Index: []
>>> x = []
>>> df.apply(x.append, axis=1)
Series([], dtype: float64)
>>> x
[Series([], dtype: float64)] # <<< why was the apply callback called with an empty row?

最佳答案

深入研究 Pandas 源代码,看起来这是罪魁祸首:

if not all(self.shape):
# How to determine this better?
is_reduction = False
try:
is_reduction = not isinstance(f(_EMPTY_SERIES), Series)
except Exception:
pass

if is_reduction:
return Series(NA, index=self._get_agg_axis(axis))
else:
return self.copy()

看起来 Pandas 正在调用不带参数的函数,试图猜测结果应该是 Series 还是 DataFrame

我想补丁已经准备好了。

编辑:此问题已修复,现在已记录并允许使用 reduce 选项来避免它:http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.apply.html

关于python - Pandas:为什么 DataFrame.apply(f, axis=1) 在 DataFrame 为空时调用 f?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21225552/

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