【发布时间】:2020-09-18 08:57:22
【问题描述】:
我有以下文件类:
class File:
def __init__(self, file_name, md5):
self.file_name = file_name
self.md5 = md5
def do_something(self):
...
是否可以直接从 pandas 中的 groupedby 映射创建此对象。例如这样的:
df_grouped = df.groupby(by=['resolution','media_type', 'asset_type'])
df_grouped_2 = df_grouped.apply(lambda x: File(x['file_name'], x['md5']))
print (df_grouped_2)
我应该能够得到类似的东西:
# resolution media_type asset_type
# HD Video Feature [<obj1>, <obj2>, ...]
# Promo [<obj1>]
# Trailer [<obj1>, <obj2>, ...]
我该如何做类似上述的事情(还有我需要在class 上添加的其他方法,例如__hash__ 吗?)
【问题讨论】:
-
你想达到什么目的?可能有一种更简单的方法可以随心所欲。
-
@anon01 我有一个来自我之前的问题的
dictstackoverflow.com/questions/63408061/…,现在我想看看它是否可以扩展到一个可以添加自己的方法等的对象. -
您能否进一步阐明您的基本目标?
-
@anon01 实际上只是具有
dict类型的扩展。能够更轻松地添加自定义方法并对该项目进行类型检查。 -
我想你可以定义一个函数(不是类),它接受数组并返回对象并使用groupby.apply。对
.apply的一次调用循环遍历组并将过滤后的行传递给您的函数,该函数必须返回单行,例如单个对象或对象列表。要返回所有行而不是一个使用.transform而不是.apply... 这就是我能想到的所有细节