pandas panda groupby重采样的输出不一致,第一个时间条柱中有缺失值

ryhaxcpt  于 2023-01-07  发布在  其他
关注(0)|答案(2)|浏览(133)

我发现输出与panda groupby重采样行为不一致。
取这个 Dataframe ,其中类别A具有第一天和第二天的样本,类别B仅具有第二天的样本:

df1 = pd.DataFrame(index=pd.DatetimeIndex(
    ['2022-1-1 1:00','2022-1-2 1:00','2022-1-2 1:00']),
    data={'category':['A','A','B']})

# Output:
#                    category
#2022-01-01 01:00:00        A
#2022-01-02 01:00:00        A
#2022-01-02 01:00:00        B

当我使用groupby重采样时,我得到了一个在类别和时间上具有多索引的Series:

res1 = df1.groupby('category').resample('1D').size()

#Output: 
#category            
#A         2022-01-01    1
#          2022-01-02    1
#B         2022-01-02    1
#dtype: int64

但是如果我再添加一个数据点,这样B在第1天有一个样本,返回值是一个 Dataframe ,类别中有一个索引,列对应于时间箱:

df2 = pd.DataFrame(index=pd.DatetimeIndex(
    ['2022-1-1 1:00','2022-1-2 1:00','2022-1-2 1:00','2022-1-1 1:00']),
    data={'category':['A','A','B','B']})

res2 = df2.groupby('category').resample('1D').size()

# Output:
#          2022-01-01  2022-01-02
# category                        
# A                  1           1
# B                  1           1

这是预期的行为吗?我在Pandas1. 4. 2中重现了这个行为,但找不到bug报告。

wh6knrhe

wh6knrhe1#

我向Pandas提交了错误报告46826。

qxgroojn

qxgroojn2#

结果应该是SeriesMultiIndex在两种情况下。有一个bug导致df.groupby.resample.size在所有组都有相同索引的情况下返回一个宽DF。这个问题已经在master分支上修复。感谢您打开issue

相关问题