程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了groupby pandas 在每条记录上都有一个列表?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决groupby pandas 在每条记录上都有一个列表??

开发过程中遇到groupby pandas 在每条记录上都有一个列表?的问题如何解决?下面主要结合日常开发的经验,给出你关于groupby pandas 在每条记录上都有一个列表?的解决方法建议,希望对你解决groupby pandas 在每条记录上都有一个列表?有所启发或帮助;

我有一个由 3 列组成的数据框

df =pd.DataFrame({
            "source_number":[11199,123244,11287,32345,12342,1232,13456],"name":["roky anderson ","james jacob","suzan kor","jenny mayor","joseph owin","joe kabush","georges mathiu","kobby lon","adam wein"],"category":["cat1","cat2","cat1","cat3","cat2"],})  

我想对类别源编号

执行分组依据功能

结果:

source_number   category     name   
1232             cat3      {joe kabush}
11199            cat1      {roky anderson}
11287            cat2      {suzan cor - georges mathius}
12342            cat1      {joseph owin}
13456            cat3      {adam wein}
32345            cat3      {jenny mayor}
123244           cat2      {james jacob - kobby lon}

我想要的是将包含超过 1 个值的 name 值拆分为新列或新行。

预期输出:

source_number   category     name            name2
1232             cat3      {joe kabush}       nan
11199            cat1      {roky anderson}    nan
11287            cat2      {suzan cor }     {georges mathius}
12342            cat1      {joseph owin}       nan
13456            cat3      {adam wein}         nan
32345            cat3      {jenny mayor}       nan
123244           cat2      {james jacob}    {kobby lon}

代码:

import pandas as pd 

my_Dict{
                "source_number":[11199,}
df = pd.DataFrame(my_Dict)

df_group = df.groupby(["source_number","category"])["name"].apply(lambda x: "{%s}" %' - '.join(X)).to_frame()  

解决方法

updatED ANSWER

df1 = df.groupby(["source_number"],as_index=falsE).agg({'name' : list,'category' : 'last'})
result = pd.concat([df1[['source_number','category']],pd.concat([df1['name'].apply(pd.Series).add_prefix('name' + "_")],axis=1)],axis = 1)
result = result.filter(like='name').applymap(lambda x:"{%s}" %X)

NOTE: 如果需要,稍后格式化名称列。

,

你得到的结果存储在一个变量 df_group 中然后(如果它是你的初始数据帧):

尝试使用 split()

df_group['name2']='{'+df_group['name'].str.split('-',expand=TruE)[1].str.rStrip('}')+'}'
df_group['name']='{'+df_group['name'].str.split('-',expand=TruE)[0].str.Strip('{}')+'}'

现在如果你打印 df_group 你会得到你想要的输出:

source_number   category     name            name2
1232             cat3      {joe kabush}       nan
11199            cat1      {roky anderson}    nan
11287            cat2      {suzan cor }     {georges mathius}
12342            cat1      {joseph owin}       nan
13456            cat3      {adam wein}         nan
32345            cat3      {jenny mayor}       nan
123244           cat2      {james jacob}    {kobby lon}

更新:

尝试使用 split()apply() 方法:

result=df_group['name'].str.split('-',expand=TruE)
result=result.apply(lambda x:'{'+x.str.Strip('{}')+'}',1)
df_group[['name'+str(x+1) for x in result.columns]]=result

现在如果你打印 df_group 你会得到你想要的输出

大佬总结

以上是大佬教程为你收集整理的groupby pandas 在每条记录上都有一个列表?全部内容,希望文章能够帮你解决groupby pandas 在每条记录上都有一个列表?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。