gpt4 book ai didi

使用分层索引将 Pandas 系列连接回源 DataFrame

转载 作者:行者123 更新时间:2023-12-02 20:46:25 29 4
gpt4 key购买 nike

我正在尝试将我的大脑集中在pandas数据结构上,并尝试在愤怒中使用它们。我发现 groupby 操作会产生 pandas 系列对象。但我不太清楚如何使用生成的系列。我特别想做两件事:

1) 将结果“连接”回初始 DataFrame

2) 根据层次索引从结果序列中选择特定值。

这是一个可以使用的玩具示例:

import pandas
df = pandas.DataFrame({'group1': ['a','a','a','b','b','b'],
'group2': ['c','c','d','d','d','e'],
'value1': [1.1,2,3,4,5,6],
'value2': [7.1,8,9,10,11,12]
})
dfGrouped = df.groupby( ["group1", "group2"] , sort=True)

## toy function, obviously not my real function
def fun(x): return mean(x**2)

results = dfGrouped.apply(lambda x: fun(x.value1))

因此生成的系列(结果)如下所示:

group1  group2
a c 2.605
d 9.000
b d 20.500
e 36.000

这是有道理的。但我该怎么办:

1) 将其连接回原始 DataFrame df

2) 选择一个值,例如 group1=='b' & group2=='d'

最佳答案

所以剩下的#1。

In [9]: df
Out[9]:
group1 group2 value1 value2
0 a c 1.1 7.1
1 a c 2.0 8.0
2 a d 3.0 9.0
3 b d 4.0 10.0
4 b d 5.0 11.0
5 b e 6.0 12.0

In [10]: results
Out[10]:
group1 group2
a c 2.605
d 9.000
b d 20.500
e 36.000

In [11]: df.set_index(['group1', 'group2'], inplace=True)['results'] = results

In [12]: df
Out[12]:
value1 value2 results
group1 group2
a c 1.1 7.1 2.605
c 2.0 8.0 2.605
d 3.0 9.0 9.000
b d 4.0 10.0 20.500
d 5.0 11.0 20.500
e 6.0 12.0 36.000

In [13]: df.reset_index()
Out[13]:
group1 group2 value1 value2 results
0 a c 1.1 7.1 2.605
1 a c 2.0 8.0 2.605
2 a d 3.0 9.0 9.000
3 b d 4.0 10.0 20.500
4 b d 5.0 11.0 20.500
5 b e 6.0 12.0 36.000

关于使用分层索引将 Pandas 系列连接回源 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11885916/

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