Python Pandas:使用值作为索引重新转动或重新组合

时间:2016-04-21 01:37:31

标签: python pandas

我是Pandas的新手,一直试图弄清楚如何使用输出值重新转动或重新组合。例如,我使用下面的read_csv读取的示例csv数据

    Transaction, Product, Dollar_Amount
    A, Orange, 1
    A, Apple, 2
    A, Pear, 3
    B, Orange, 4
    B, Grape, 5
    C, Apple, 6
    D, Orange, 1
    D, Apple, 2
    D, Pear, 3

我使用以下pivot或groupby方法计算每笔交易中的产品数量,

grp = df.groupby('Transaction').size().sort_values(ascending=False).reset_index()
pivo = pd.pivot_table(df, index=['Transaction'], values=['Dollar_Amount'], margins=True, aggfunc=[len]).reset_index()

从输出中,我想使用pivot或groupby,这样我就可以计算每个产品计数中的事务数量,以获得以下输出,

Count_Products Count_Transactions
1 1 <-- Transaction C
2 1 <-- Transaction B
3 2 <-- Transaction A & D

我迷失了如何做到这第二部分。请提前帮助和谢谢。

此致 Lobbie

2 个答案:

答案 0 :(得分:2)

df2 = pd.pivot_table(df.groupby('Transaction').size().reset_index(), index=0, values='Transaction', aggfunc=len).reset_index()
df2.columns = ("Count_Products", "Count_Transactions")

输出:

Count_Products Count_Transactions
0            1                  1
1            2                  1
2            3                  2

答案 1 :(得分:2)

你可以使用管道

result=(df.groupby('Transaction')
          .size()
          .sort_values(ascending=False)
          .reset_index()
          .rename(columns={0:'Count_Transactions'})
          .groupby('Count_Transactions')
          .sum())

你想要的结果几乎相同

    Transaction
Count_Transactions  
1   C
2   B
3   D A