我是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
答案 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