Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python groupby对象的填充顺序,熊猫_Python_Pandas_Padding - Fatal编程技术网

Python groupby对象的填充顺序,熊猫

Python groupby对象的填充顺序,熊猫,python,pandas,padding,Python,Pandas,Padding,这是我的数据帧示例 d = {'id':['aa','aa','aa','aa','dd','dd','dd','ee','ee','ee','ee','ee'], 'B': [3,2.9,4,2.3,3.1,2.2,2.9,4,2.3,3.3,2.9,3], 'C':[1.9,2.2,2.9,0.2,1,2.1,1.3,3,3.1,2.2,2.9,0.2]} df = pd.DataFrame(data=d) df['tp'] = pd.to_timedelta(df.gro

这是我的数据帧示例

d = {'id':['aa','aa','aa','aa','dd','dd','dd','ee','ee','ee','ee','ee'],
     'B': [3,2.9,4,2.3,3.1,2.2,2.9,4,2.3,3.3,2.9,3],
    'C':[1.9,2.2,2.9,0.2,1,2.1,1.3,3,3.1,2.2,2.9,0.2]}
df = pd.DataFrame(data=d)
df['tp'] = pd.to_timedelta(df.groupby('id').cumcount() * 30, unit='S')
df.set_index('tp', inplace=True)
我正在尝试填充(后填充)上述数据帧,以便每个唯一id具有相同的形状

我就是这样开始的

g = df.groupby('id')
for id, id_unique in g:
    print(id_unique)
我希望每个
id\u唯一的
具有相同的形状。i、 e(4,3)。因此,所有唯一id将具有相同的计数

我可以垫序列,如果它是一个系列使用

pad_sequences(data, padding='post', maxlen=max_seq)
但我不知道如何填充数据帧

            A    B    C     
tp                                                     
00:00:00  1.0  3.0  1.9        
00:00:30  1.0  2.9  2.2       
00:01:00  2.1  4.0  2.9      
00:01:30  1.3  2.3  0.2       
00:02:00  0.0  0.0  0.0                                  
00:00:00  1.1  3.1  1.0      
00:00:30  1.2  2.2  2.1       
00:01:00  1.9  2.9  1.3      
00:01:30  0.0  0.0  0.0      
00:02:00  0.0  0.0  0.0                                                           
00:00:00  1.0  4.0  3.0        
00:00:30  2.1  2.3  3.1      
00:01:00  1.3  3.3  2.2       
00:01:30  0.9  2.9  2.9      
00:02:00  2.0  3.0  0.2   

           A    B    C  id  
tp                                                     
00:00:00  1.0  3.0  1.9  aa      
00:00:30  1.0  2.9  2.2  aa      
00:01:00  2.1  4.0  2.9  aa     
00:01:30  1.3  2.3  0.2  aa      
00:02:00  0.0  0.0  0.0  aa  

            A    B    C  id     
tp                                                     
00:00:00  1.1  3.1  1.0  dd      
00:00:30  1.2  2.2  2.1  dd      
00:01:00  1.9  2.9  1.3  dd      
00:01:30  0.0  0.0  0.0  dd     
00:02:00  0.0  0.0  0.0  dd      

            A    B    C  id      
tp                                                     
00:00:00  1.0  4.0  3.0  ee      
00:00:30  2.1  2.3  3.1  ee     
00:01:00  1.3  3.3  2.2  ee      
00:01:30  0.9  2.9  2.9  ee     
00:02:00  2.0  3.0  0.2  ee
这将是我的新数据帧

            A    B    C     
tp                                                     
00:00:00  1.0  3.0  1.9        
00:00:30  1.0  2.9  2.2       
00:01:00  2.1  4.0  2.9      
00:01:30  1.3  2.3  0.2       
00:02:00  0.0  0.0  0.0                                  
00:00:00  1.1  3.1  1.0      
00:00:30  1.2  2.2  2.1       
00:01:00  1.9  2.9  1.3      
00:01:30  0.0  0.0  0.0      
00:02:00  0.0  0.0  0.0                                                           
00:00:00  1.0  4.0  3.0        
00:00:30  2.1  2.3  3.1      
00:01:00  1.3  3.3  2.2       
00:01:30  0.9  2.9  2.9      
00:02:00  2.0  3.0  0.2   
reindex


堆栈

reindex

你能解释一下
A
是从哪里来的吗?如果它只是另一个专栏,我的答案应该仍然有效,但如果它应该以某种方式创建,我会感到困惑。我认为这只是他的输入数据框架中的一个错误。我会取消删除你的解决方案。谢谢,看起来更干净了。我有点失望,因为《产品》中的
没有从单个系列中推断出具有该属性的名称。伟大的头脑等等。。。看看我删除的答案。你可以看到我处理它的方式有点不同。我不会删除你的!我喜欢更实用的方法非常感谢!你们是救命恩人。
          id    B    C
tp
00:00:00  aa  3.0  1.9
00:00:30  aa  2.9  2.2
00:01:00  aa  4.0  2.9
00:01:30  aa  2.3  0.2
00:02:00  aa  0.0  0.0
00:00:00  dd  3.1  1.0
00:00:30  dd  2.2  2.1
00:01:00  dd  2.9  1.3
00:01:30  dd  0.0  0.0
00:02:00  dd  0.0  0.0
00:00:00  ee  4.0  3.0
00:00:30  ee  2.3  3.1
00:01:00  ee  3.3  2.2
00:01:30  ee  2.9  2.9
00:02:00  ee  3.0  0.2
df.set_index('id', append=True).unstack(fill_value=0, level=0).stack()
               B    C  
id tp                  
aa 00:00:00  3.0  1.9  
   00:00:30  2.9  2.2  
   00:01:00  4.0  2.9  
   00:01:30  2.3  0.2  
   00:02:00  0.0  0.0  
dd 00:00:00  3.1  1.0  
   00:00:30  2.2  2.1  
   00:01:00  2.9  1.3  
   00:01:30  0.0  0.0  
   00:02:00  0.0  0.0  
ee 00:00:00  4.0  3.0  
   00:00:30  2.3  3.1  
   00:01:00  3.3  2.2  
   00:01:30  2.9  2.9  
   00:02:00  3.0  0.2  
def f(d):
    return pd.MultiIndex.from_product(d.index.levels, names=d.index.names)

def g(d):
    return d.reindex(f(d), fill_value=0)

df.set_index('id', append=True).pipe(g) \
  .reset_index('id').sort_values(['id', 'tp'])

          id    B    C
tp                    
00:00:00  aa  3.0  1.9
00:00:30  aa  2.9  2.2
00:01:00  aa  4.0  2.9
00:01:30  aa  2.3  0.2
00:02:00  aa  0.0  0.0
00:00:00  dd  3.1  1.0
00:00:30  dd  2.2  2.1
00:01:00  dd  2.9  1.3
00:01:30  dd  0.0  0.0
00:02:00  dd  0.0  0.0
00:00:00  ee  4.0  3.0
00:00:30  ee  2.3  3.1
00:01:00  ee  3.3  2.2
00:01:30  ee  2.9  2.9
00:02:00  ee  3.0  0.2