在Pandas中对数据框的行进行分组

时间:2018-10-31 11:14:29

标签: python pandas

我目前有一个名为UniqueItems的数据框,它看起来像这样(我将其缩短是因为它的列表很长):

# of Transactions
Item    
Adjustment  1
Afternoon with the baker    44
Alfajores   369
Argentina Night 7
Art Tray    38

我整理出值以给我一个名为UniqueItem_inorder的新数据框  通过此代码显示了前5大交易:

UniqueItem_inorder = UniqueItem.sort_values(by=['# of Transactions'], ascending=False).head(5)

如果我要将其余的项目分组到UniqueItem_inorder中不在的UniqueItem中称为“其他”的另一行中,我将如何处理?

1 个答案:

答案 0 :(得分:0)

以下内容的某些变体可能会起作用:

import string
import numpy as np
import pandas as pd

np.random.seed(2)    
df = pd.DataFrame({'Item': list(string.ascii_lowercase),
                   'Number': np.random.randint(1, 300, size=26)})
df.sort_values(by='Number', ascending=False, inplace=True)
leftover = df['Number'].iloc[5:].sum()
df = df.append({'Item': 'other', 'Number': leftover}, ignore_index=True)
print(df.head())
print(df.tail())

结果为:

  Item  Number
0    p     294
1    l     288
2    f     264
3    t     261
4    y     256
     Item  Number
22      v      39
23      w      34
24      d      23
25      b      16
26  other    2155

如果您要从数据框中删除项目5到25,请在添加“其他”行时忽略它们:

<as before>
df = df[:5].append({'Item': 'other', 'Number': leftover}, ignore_index=True)
print(df)

结果:

    Item  Number
0      p     294
1      l     288
2      f     264
3      t     261
4      y     256
5  other    2155