首先,我道歉!这是我第一次使用堆栈溢出,所以我希望我做得对!我搜索但无法找到我正在寻找的东西。 我对熊猫和蟒蛇也很新:) 我将尝试使用一个例子,我会尽力清楚。
我有一个包含30列的数据框,其中包含有关购物车的信息,其中1列(订单)有2个值,或者已完成正在进行中。 而且我喜欢20个带有项目的栏目,比方说苹果,橙子,香蕉......而且我需要知道完整订单中有多少次苹果以及正在进行的订单中有多少次。我决定使用具有聚合函数计数的数据透视表。 这将是数据帧的一个小例子:
Order | apple | orange | banana | pear | pineapple | ... |
-----------|-------|--------|--------|------|-----------|------|
completed | 2 | 4 | 10 | 5 | 1 | |
completed | 5 | 4 | 5 | 8 | 3 | |
iProgress | 3 | 7 | 6 | 5 | 2 | |
completed | 6 | 3 | 1 | 7 | 1 | |
iProgress | 10 | 2 | 2 | 2 | 2 | |
completed | 2 | 1 | 4 | 8 | 1 | |
我有我想要的输出,但我正在寻找的是一种更优雅的方式来选择大量的列,而无需手动输入。
df.pivot_table(index=['Order'], values=['apple', 'bananas', 'orange', 'pear', 'strawberry',
'mango'], aggfunc='count')
但是我想选择大约15列,所以不要一次一个地输入15次,我确信通过使用列号或其他东西可以轻松地进行操作。让我们说我想从6到15之间选择列。
我尝试过像= [df.columns [6:15]]之类的东西,我也尝试过使用df.iloc,但正如我所说,我很新,所以我可能使用错误的东西或制造愚蠢的东西!
还有办法让他们按照他们的顺序获得吗?因为在我的回答中,他们似乎按字母顺序排序,我想保持列的顺序。所以它应该是苹果,橙子,香蕉......
Order Completed In progress
apple 92 221
banana 102 144
mango 70 55
我正在寻找一种改进代码的方法,我希望我没有弄得太多。谢谢!
答案 0 :(得分:2)
我认为你可以使用:
a^2 + csc(a)
#if need select only few columns - df.columns[1:3]
df = df.pivot_table(columns=['Order'], values=df.columns[1:3], aggfunc='count')
print (df)
Order completed iProgress
apple 4 2
orange 4 2
What is the difference between size and count in pandas?
#if need use all column, parameter values can be omit
df = df.pivot_table(columns=['Order'], aggfunc='count')
print (df)
Order completed iProgress
apple 4 2
banana 4 2
orange 4 2
pear 4 2
pineapple 4 2
df = df.pivot_table(columns=['Order'], aggfunc=len)
print (df)
Order completed iProgress
apple 4 2
banana 4 2
orange 4 2
pear 4 2
pineapple 4 2
答案 1 :(得分:1)