过滤熊猫数据框

时间:2021-07-11 01:08:32

标签: python pandas

假设我们有一个 Pandas 数据框 df ,其中一列 id 大约有 5 行。在下面的代码中,为什么我仍然得到过滤后数据帧的长度为5:

import pickle
import gzip
import bz2
import pandas as pd
import os
import _pickle as cPickle
import bz2
from downcast import reduce    

def load(filename):
    """
    Load from filename using pickle
    
    @param filename: name of file to load from
    @type filename: str
    """

    try:
        f = bz2.BZ2File(filename, 'rb')
    except:
        sys.stderr.write('File ' + filename + ' cannot be read\n')
        sys.stderr.write(details)
        return

    myobj = cPickle.load(f)
    f.close()
    return myobj

df=pd.DataFrame({"ids":[1,2,3,4,5]})
print(df.shape)
sfile = bz2.BZ2File('df_list_small', 'w')
pickle.dump(df, sfile)

这给出了 (5,1) 的形状。

df_new= load('df_list_small')
df_new = reduce(df_new)
all_groups = {ident:df_new for ident,df_new in df_new.groupby('ids')}

ids = 1
df_test = all_groups[ids]
print(df_test.shape)

下面给出了 (1,1) 的形状

所以也许它只适用于某些文件?

1 个答案:

答案 0 :(得分:0)

我想通了。过滤后的数据框将与原始数据框具有相同的维度,因为它们是相等的。如果我放了一个不同的id,那么过滤后的数据框的维度就会不同。