如何根据系列名称加入以下系列列表?

问题描述 投票:0回答:1

我有两个对象系列,一个在前,一个在后,按名称分组。

我通过以下代码生成它们:

beforeseries = df.groupby('name', dropna=True)['order'].apply(list)
print(beforeseries)
afterseries = df.groupby('name', dropna=True)['order'].apply(list)
print(afterseries)

生成以下输出:

系列之前:

名称1 [第一,第二,第三] 名称2 [第一、第二、第三] Name_n [第一,第二,第三,第四]

后记:

姓名1[第四、第五] 名称2 [第四、第五、第六] Name_n [第五、第六]

我想加入他们,所以输出如下所示”

名称 1 [‘第一第二第三’, ‘第四第五’] 名称 2 ['第一第二第三','第四第五第六'] 名称 3 [‘第一第二第三第四’,‘第五第六’]

python pandas list series
1个回答
0
投票

闻起来像 XY 问题。此外,生成两个系列的代码是相同的。

IIUC,似乎您需要

concat
两个对象:

out = (
    pd.concat([beforeseries, afterseries], axis=1)
        .groupby(level=0, axis=1).agg(lambda x: x.to_numpy().tolist())
)

输出:

print(out)

           order
name            
A     [v x, o q]
B         [y, r]
C     [w z, p s]

使用的输入:

df = pd.DataFrame({"name": list("ACABC"), "order": list("vwxyz")})
beforeseries = df.groupby("name", dropna=True)["order"].agg(" ".join)

df = pd.DataFrame({"name": list("ACABC"), "order": list("opqrs")})
afterseries  = df.groupby("name", dropna=True)["order"].agg(" ".join)
© www.soinside.com 2019 - 2024. All rights reserved.