gpt4 book ai didi

python - 在 pandas 中是否有类似 GroupBy.get_group 的东西,但有一个可选的默认值?

转载 作者:太空狗 更新时间:2023-10-29 17:49:58 38 4
gpt4 key购买 nike

我有一个 DataFrame df,我已经对其进行了“分组”。我正在寻找一个类似于 get_group(name) 的函数,除了它不是在名称不存在时抛出 KeyError,而是返回一个空的 DataFrame(或其他一些值),类似于 dict.get 的工作方式:

g = df.groupby('x')

# doesn't work, but would be nice:
i = g.get_group(1, default=[])

# does work, but is hard to read:
i = g.obj.take(g.indices.get(1, []), g.axis)

是否已经有提供此功能的功能?

编辑:

在许多方面,GroupBy 对象由字典(.indicies、.groups)表示,并且这种“使用默认值获取”功能对于包含在 Python 语言本身中的字典概念来说已经足够核心了。似乎如果一个类似 dict 的东西没有 get with default,也许我没有正确理解它?为什么类似 dict 的东西没有“get with default”?

我想做的一个简短例子是:

df1_bymid = df1.groupby('mid')
df2_bymid = df2.groupby('mid')

for mid in set(df1_bymid.groups) | set(df2_bymid.groups) :
rows1 = df1_bymid.get_group(mid, [])
rows2 = df1_bymid.get_group(mid, [])
for row1, row2 in itertools.product(rows1, rows2) :
yield row1, row2

当然我可以创建一个函数,而且我可能会这样做,但似乎如果我必须走这么远,也许我没有按照预期的方式使用 GroupBy 对象:

def get_group(df, name, obj=None, default=None) :
if obj is None :
obj = df.obj

try :
inds = df.indices[name]
except KeyError, e :
if default is None :
raise e

inds = default

return df.obj.take(inds, df.axis)

最佳答案

我可能会定义我自己的 get_group() 如下

In [55]: def get_group(g, key):
....: if key in g.groups: return g.get_group(key)
....: return pd.DataFrame()
....:

In [52]: get_group(g, 's1')
Out[52]:
Mt Sp Value count
0 s1 a 1 3
1 s1 b 2 2

In [54]: get_group(g, 's4')
Out[54]:
Empty DataFrame
Columns: []
Index: []

关于python - 在 pandas 中是否有类似 GroupBy.get_group 的东西,但有一个可选的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19804282/

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