如何从DataFrame.groupby中“保存”组以分隔变量?

问题描述

我有一个DataFrame,其中包含由发件人.groupby发送的WhatsApp消息。我可以以某种方式将整个DataFrame或仅一个Series拆分并保存到单独的变量中吗?

所以说我有发送者A,B,C。我可以分别使用发送者A,B,C或仅发送者曾经是A,B或C的一列的序列来获得3个新数据帧吗?

解决方法

据我所知,您不能在没有显式定义的情况下动态创建新变量。例如:

for sender in senders:
    df_{sender} = df[df["sender"] == sender]

因此,如果要将DataFrame拆分为多个变量,则必须对定义所有变量的解决方案进行“硬编码”。例如。我建议您使用df_A = df[df["sender"] == "A"],然后再进行适当的计算/转换,因为您要执行的对象一次仅包含一个发件人。

如果您想将多个df.groupby("sender")保存为CSV文件(每个发件人一个),则可以尝试:

DataFrame

x.name是df.groupby("sender").apply(lambda x: x.to_csv(f"sub_df_{x.name}.csv")) 所在的索引,因此在这种情况下是相应的发送者。