gpt4 book ai didi

python - Pandas groupby,其中所有列都添加到以列名为前缀的列表中

转载 作者:行者123 更新时间:2023-11-28 16:21:57 26 4
gpt4 key购买 nike

我有一个如下所示的 CSV 文件:

id1,feat1,feat2,feat3
a,b,asd,asg
c,d,dg,ag
a,e,sdg,as
c,f,as,sdg
c,g,adg,sd

我使用 df = pd.read_csv("file.csv") 将其读入数据框。

我想按 id1 分组,并将所有其他列组合在该组的一行中,并添加标题名称作为前缀。也就是说输出应该是一个看起来像这样的数据框:

a [feat1=b,feat1=e,feat2=asd,feat2=sdg,feat3=asg,feat3=as]
c [feat1=d,feat1=f,feat1=g,feat2=dg,feat2=as,feat2=adg,feat3=ag,feat3=sdg,feat3=sd]

df.groupby('id1') 会让我开始,但我不确定从那里去哪里。

执行此操作的好方法是什么?

最佳答案

您可以使用自定义函数并在 groupby 对象上使用 apply,该函数会在传递给 zip 列的 Series 上再次调用 apply将名称和值放入列表中,然后我们执行列表理解并根据需要将其返回到列表中:

In [54]:    
def foo(x):
l = (x.apply(lambda x: x.name + '=' + x)).values.tolist()
return pd.Series([[i for j in l for i in j]])

gp = df.groupby('id1')[['feat1','feat2','feat3']]
gp1 = gp.apply(foo)
gp1

Out[54]:
0
id1
a [feat1=b, feat2=asd, feat3=asg, feat1=e, feat2...
c [feat1=d, feat2=dg, feat3=ag, feat1=f, feat2=a...

如果我们查看内容,我们会看到我们有一个值列表:

In [55]:    
gp1.iloc[0].values

Out[55]:
array([['feat1=b', 'feat2=asd', 'feat3=asg', 'feat1=e', 'feat2=sdg', 'feat3=as']], dtype=object)

关于python - Pandas groupby,其中所有列都添加到以列名为前缀的列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39562915/

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