pandas的DataFrame按组进行fillna产生非常奇怪的结果

2024-04-28 07:49:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了非常奇怪的结果与熊猫数据帧分组操作。我想做的是按索引分组(我的索引不是唯一的),然后适当地填充空值。这在很多情况下都是可行的,但在某些情况下,我会遇到一种奇怪的行为,即返回的全部是空数据帧:

df = pd.DataFrame(columns=['sample', 'cooling_rate'], 
              index=['SYd', 'SYd', 'XNa', 'Xna', 'Qza_new', 'Qza_new'],  
              data=[['SYd', 3], ['SYd', 3], ['XNa', 3], 
                    ['XNa', 3], ['val1', 'val3'], ['val1', None]])

res = df.groupby(df.index).fillna('1')

#Empty DataFrame
#Columns: []
#Index: []

但是,如果我稍微更改数据帧,将索引项“QZa_new”重命名为“QZa_new”:

^{pr2}$

结果是一个按预期正确分组、填充的数据帧。我无法理解这种行为,我也没有得到任何“错误”。在

经过更多的实验,似乎关键点肯定在我的数据帧索引行中:

    index=['SYd', 'SYd', 'XNa', 'Xna', 'qza_new', 'qza_new'], 

在字母表中,倒数第二的值必须比最后一个值早。换句话说

    index=['SYd', 'SYd', 'XNa', 'XNa', 'a', 'b']

工作并返回填充的数据帧,但是:

    index=['SYd', 'SYd', 'XNa', 'XNa', 'c', 'b']

返回空数据帧。但为什么呢?在

我怀疑我错过了一些显而易见的东西,但我不知道为什么我会看到这种行为。在

更新:

这个问题似乎是已知的:https://github.com/pandas-dev/pandas/issues/14955希望在下一个版本中得到修复。在


Tags: 数据dataframepandasdfnewindex情况我会