Pandas得到一排价值的索引

2024-06-16 10:05:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用以下数据帧

 like            max_interest    min_interest
 basketball       4               2
 football         2               0
 soccer           4               2
 softball         4               2
 volleyball       4               2
 swimming         2               0
 cheerleading     4               2
 baseball         4               2

我想按最大兴趣/最小兴趣分组

^{pr2}$

我试图使用groupby(max_interest)使其工作,但未能找到如何合并like列

这实际上是将likes的行值合并到max_interest标题下的字符串中,类似地,mininterest也是如此。在

有一种方法可以通过编写iterateng的手工编码逻辑并不断地添加类似的代码,但是我想知道我是否可以使用pandas/np库来编写它

感谢帮助。在


Tags: 数据minmaxlike兴趣basketballfootballinterest
2条回答

首先拆分DataFrame,然后根据兴趣级别连接适当的like:

u = ({k: ','.join(n['like'])} for k, n in df.groupby('max_interest'))              
v = ({k: ','.join(n['like'])} for k, n in df.groupby('min_interest'))

然后创建一个新的DataFrame

^{pr2}$

将框架放入所需的格式,使用groupby().last()

^{3}$

输出:

                            max_interest                          min_interest                                                                      
0                                   NaN                             foot,swim                                                                      
2                             foot,swim  basket,soccer,soft,volley,cheer,base                                                                      
4  basket,soccer,soft,volley,cheer,base                                   NaN                                                                      

要设置索引名称:

adjustframe.index.name = 'group'                                    

这里有一个选项:

In [39]: def groupby(key):
   ....:         result = data.groupby(key).agg({'like': lambda v: ','.join(v)})
   ....:         result.index.name = 'group'
   ....:         result.columns = [key]
   ....:         return result
   ....:

In [40]: pd.concat((groupby(key) for key in ['max_interest', 'min_interest']), axis=1)
Out[40]:
                                            max_interest                                       min_interest
group
0                                                    NaN                                  football,swimming
2                                      football,swimming  basketball,soccer,softball,volleyball,cheerlea...
4      basketball,soccer,softball,volleyball,cheerlea...                                                NaN

相关问题 更多 >