在单个数据帧中保存多个列的计数

2024-09-29 23:32:52 发布

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

我现在有一个3列的数据框,如下所示

Model          IsJapanese   IsGerman   
BenzC             0            1
BensGla           0            1
HondaAccord       1            0
HondaOdyssey      1            0
ToyotaCamry       1            0

我想创建一个新的数据框,并将TotalJapanese和TotalGerman作为同一数据框中的两列

我可以通过创建两个不同的数据帧来实现这一点。但是想知道如何在一个数据帧中获得这两个计数

请推荐,谢谢

正在编辑并向此[抱歉,不确定是否允许,但正在尝试]添加另一个类似的数据帧

第二个数据集-基于数据的重复,我试图在单个数据帧中保存多个计数

这是我的示例数据集

Store        Address           IsLA             IsGA
Albertsons   Cross St           1                 0
Safeway      LeoSt              0                 1
Albertsons   Main St            0                 1
RiteAid      Culver St          1                 0

我的目标是准备一个每个存储具有多个计数的新数据集 结果应该是这样的

Store      TotalStores TotalLA TotalGA 
Alberstons 2           1        1 
Safeway    1           0        1 
RiteAid    1           1        0

有可能在单个数据帧中实现这些功能吗

谢谢


Tags: 数据storemodel计数stsafewaytoyotacamryisjapanese
1条回答
网友
1楼 · 发布于 2024-09-29 23:32:52

一种方法是存储日本车和德国车的总和,并使用它们手动创建数据帧:

j , g =sum(df['IsJapanese']),sum(df['IsGerman']) 

total_df = pd.DataFrame({'TotalJapanese':j,
                         'TotalGerman':g},index=['Totals'])

print(total_df)
 
        TotalJapanese  TotalGerman
Totals              3            2

另一种方法是将(T)数据帧转置,sum(axis=1),然后转换回:

>>> total_df_v2 = pd.DataFrame(df.set_index('Model').T.sum(axis=1)).T

print(total_df_v2)

   IsJapanese  IsGerman
           3         2

要回答第二个问题,可以在“Store”列上使用^{},在Address上使用参数count,在其他两列上使用参数sum。然后,如果需要,您可以rename()您的列:

resulting_df  = df.groupby('Store').agg({'Address':'count',
                         'IsLA':'sum',
                         'IsGA':'sum'}).\
    rename({'Address':'TotalStores',
             'IsLA':'TotalLA',
             'IsGA':'TotalGA'},axis=1)

印刷品:

            TotalStores  IsLA  IsGA
Store                              
Albertsons            2     1     1
RiteAid               1     1     0
Safeway               1     0     1

相关问题 更多 >

    热门问题