将新列添加到作为groupby conu结果的数据帧中

2024-06-14 02:04:58 发布

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

我试图得到一个作者写的书的总数,把它和我的数据框放在一个名为booknumber的列中,这个数据框还有15列。你知道吗

我在网上查过,人们使用groupby with count(),但是它没有创建我想要的列,它只给出一列没有名称的数字,我不能将它与原始数据帧放在一起。你知道吗

author_count_df = (df_author["Name"]).groupby(df_author["Name"]).count()

print(author_count_df)

结果:

Name
A  D                3
A  Gill             4
A  GOO              3
ALL  SHOT          10
AMIT  PATEL         5
                   ..
vishal  raina       7
walt  walter        6
waqas  alhafidh     3
yogesh  koshal      8
zainab  m.jawad     9
Name: Name, Length: 696, dtype: int64

应为:具有

Name          other 14 columns from author_df   Book Number
A  D                    ...                         3
A  Gill                 ...                         4
A  GOO                  ...                         3
ALL  SHOT               ...                         10
AMIT  PATEL             ...                         5
                        ...                         ..
vishal  raina           ...                         7
walt  walter            ...                         6
waqas  alhafidh         ...                         3
yogesh  koshal          ...                         8
zainab  m.jawad         ...                         9

Tags: 数据namedfcountallauthorgroupbygoo
3条回答

对groupby使用transform并将其重新分配:

df_author['Book Number']=df_author.groupby("Name")['Name'].transform('count')

对于新的df,请使用:

author_count_df = df_author.assign(BookNum=df_author.groupby("Name")['Name']
                                                        .transform('count'))

使用reset_index()

author_count_df = (df_author["Name"]).groupby(df_author["Name"]).count().reset_index()

这基本上告诉pandas groupby重置回原始索引

您做得很好,只是需要检查如何填充或将值赋回到您得到的新列中,这可以通过^{}方法实现,该方法非常优雅。你知道吗

直接从文件:

  1. Assign new columns to a DataFrame.

  2. Returns a new object with all original columns in addition to new ones. Existing columns that are re-assigned will be overwritten.

相关问题 更多 >