【问题标题】:How do I multiply a pandas column with a part of a multi index dataframe如何将 pandas 列与多索引数据框的一部分相乘
【发布时间】:2018-08-01 16:55:14
【问题描述】:

我有一个带有多索引和一列的数据框。

索引字段为typeamount,列名为count

我想添加一个将amountcount 相乘的列

df2 = df.groupby(['type','amount']).count().copy()
# I then dropped all columns but one and renamed it to "count"

df2['total_amount'] = df2['count'].multiply(df2['amount'], axis='index')

不起作用。我在amount 上收到一个关键错误。

如何访问多索引的一部分以在计算中使用它?

【问题讨论】:

    标签: python python-3.x pandas multiplication


    【解决方案1】:

    GroupBy.transform 用于Series,其大小与原始df 相同且具有聚合值,因此可以使用multiple

    count = df.groupby(['type','amount'])['type'].transform('count')
    df['total_amount'] = df['amount'].multiply(count, axis='index')
    print (df)
       A  amount  C  D  E type  total_amount
    0  a       4  7  1  5    a             8
    1  b       5  8  3  3    a             5
    2  c       4  9  5  6    a             8
    3  d       5  4  7  9    b            10
    4  e       5  2  1  2    b            10
    5  f       4  3  0  4    b             4
    

    或者:

    df = pd.DataFrame({'A':list('abcdef'),
                       'amount':[4,5,4,5,5,4],
                       'C':[7,8,9,4,2,3],
                       'D':[1,3,5,7,1,0],
                       'E':[5,3,6,9,2,4],
                       'type':list('aaabbb')})
    
    print (df)
       A  amount  C  D  E type
    0  a       4  7  1  5    a
    1  b       5  8  3  3    a
    2  c       4  9  5  6    a
    3  d       5  4  7  9    b
    4  e       5  2  1  2    b
    5  f       4  3  0  4    b
    
    df2 = df.groupby(['type','amount'])['type'].count().to_frame('count')
    df2['total_amount'] = df2['count'].mul(df2.index.get_level_values('amount'))
    print (df2)
                 count  total_amount
    type amount                     
    a    4           2             8
         5           1             5
    b    4           1             4
         5           2            10
    

    【讨论】:

    • 谢谢,这似乎可行,但我需要使用df2['amount']...
    猜你喜欢
    • 2017-05-20
    • 1970-01-01
    • 2021-02-07
    • 2020-10-08
    • 2015-04-07
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多