gpt4 book ai didi

python - 填充 groupby 对象序列,Pandas

转载 作者:行者123 更新时间:2023-11-28 20:30:32 25 4
gpt4 key购买 nike

这是我的数据框示例,

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_unique 都具有相同的形状。即(4,3)。因此所有唯一 ID 的计数都相同。

如果是系列使用,我可以填充序列;

pad_sequences(data, padding='post', maxlen=max_seq)

但是我不知道如何填充数据框。

喜欢...

           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

最佳答案

重建索引


idx = pd.MultiIndex.from_product(
[df.index.unique(), df['id'].unique()], names=['tp', 'id'])

(df.set_index('id', append=True)
.reindex(idx, fill_value=0).sort_index(level=[1, 0]).reset_index(1))

          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

关于python - 填充 groupby 对象序列,Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56940172/

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