gpt4 book ai didi

python - 从 Pandas 的列列表中创建新列

转载 作者:太空宇宙 更新时间:2023-11-04 00:52:54 24 4
gpt4 key购买 nike

我有一个 pandas 数据框,其中有一列数据是根据 groupby 操作计算的统计信息列表。

df = pd.DataFrame({'a':[1,1,1,2,2,2,3], 'b':[3,4,2,3,4,3,2]}) 
def calculate_stuff(x):
return len(x)/5, sum(x)/len(x), sum(x)
>>> df.groupby('a').apply(lambda row : calculate_stuff(row.b))
a
1 (0, 3, 9)
2 (0, 3, 10)
3 (0, 2, 2)
dtype: object

基本上,我有几个相互依赖的统计数据,必须为每个 groupby 行计算。执行此操作的函数返回统计值的元组。我想要的是为元组的每个索引创建一个新列,使其看起来像这样:

a    col1    col2    col3
1 0 3 9
2 0 3 10
3 0 2 2

我不认为我可以使用 df.groupby('a').agg 因为其中一个计算需要其他计算。有什么建议吗?

编辑:我意识到示例中的聚合函数不是聚合函数,所以我更改了它们

最佳答案

添加一个额外的 a 类别项,使结果为 4x3。

df = pd.DataFrame({'a': [1, 1, 1, 2, 2, 2, 3, 4], 
'b': [3, 4, 2, 3, 4, 3, 2, 1]})

new_cols = ['col1', 'col2', 'col3']

gb = df.groupby('a').apply(lambda group: calculate_stuff(group.b))

>>> pd.DataFrame(zip(*gb), columns=gb.index, index=new_cols).T
col1 col2 col3
a
1 0 3 9
2 0 3 10
3 0 2 2
4 0 1 1

关于python - 从 Pandas 的列列表中创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36433474/

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