当前位置: 首页 > 面试题库 >

熊猫:按列A分组,并从其他列中列出元组?

呼延德华
2023-03-14
问题内容

我想将用户交易汇总到熊猫列表中。我不知道如何制作一个包含多个字段的列表。例如,

df = pd.DataFrame({'user':[1,1,2,2,3], 
                   'time':[20,10,11,18, 15], 
                   'amount':[10.99, 4.99, 2.99, 1.99, 10.99]})

看起来像

    amount  time  user
0   10.99    20     1
1    4.99    10     1
2    2.99    11     2
3    1.99    18     2
4   10.99    15     3

如果我做

print(df.groupby('user')['time'].apply(list))

我懂了

user
1    [20, 10]
2    [11, 18]
3        [15]

但是如果我这样做

df.groupby('user')[['time', 'amount']].apply(list)

我懂了

user
1    [time, amount]
2    [time, amount]
3    [time, amount]

多亏了下面的答案,我才知道我可以做到这一点

df.groupby('user').agg(lambda x: x.tolist()))

要得到

             amount      time
user                         
1     [10.99, 4.99]  [20, 10]
2      [2.99, 1.99]  [11, 18]
3           [10.99]      [15]

但是我要按照相同的顺序对时间和金额进行排序-这样我才能按顺序处理每个用户的交易。

我一直在寻找一种产生这种方式的方法:

             amount-time-tuple
user                         
1     [(20, 10.99), (10, 4.99)]
2     [(11,  2.99), (18, 1.99)]
3     [(15, 10.99)]

但是也许有一种方法可以在不“纠缠”两列的情况下进行排序?


问题答案:

apply(list) 我会考虑序列索引而不是值。我认为您正在寻找

df.groupby('user')[['time', 'amount']].apply(lambda x: x.values.tolist())



用户
1 [[23.0,2.99],[50.0,1.99]]
2 [[12.0,1.99]]


 类似资料:
  • 我想得到这样的东西 我用groupby关键字搜索了stackoverflow,没有找到与我类似的问题。

  • 我有一个数据框,上面写着有一列 <代码> 我想对这些年龄段进行分组,并创建一个类似这样的新专栏 如何使用Pandas库实现这一点。 我试过这样做 但这样做我得到了这个警告 /Users/Anand/miniconda3/envs/learn/lib/python3.7/site packages/ipykernel_launcher.py:3:SettingWithCopyWarning:试图在数

  • 问题内容: 我已经看到了将一个列/系列分解为Pandas数据框的多个列的主题的几种变体,但是我一直在尝试做点事情,而实际上并没有成功地使用现有方法。 给定这样的一个DataFrame: 我想将系列中的项目转换为以值作为值的列,如下所示: 我觉得这应该是相对简单的事情,但是由于卷积水平的提高,我已经为此花了几个小时不停地努力,但没有成功。 问题答案: 有几种方法: 使用: 使用: 使用后跟:

  • 问题内容: pandas groupby的默认行为是将group by列转换为index并将其从数据框的列列表中删除。例如,说我有一个包含这些列的dataFrame 如果我申请一个GROUPBY发言权列和这样 数据框不再在列列表中。它们将自动转换为结果数据帧的索引。 我的问题是如何对列执行groupby并将该列保留在数据框中? 问题答案:

  • 问题内容: 我在pandas数据框上使用来删除没有特定列的最小值的所有行。像这样: 但是,如果我不止这两列,其他列(例如在我的示例中)将被删除。我可以使用保留这些列,还是必须找到一种不同的方式删除行? 我的数据如下: 并应以如下形式结束: 但是我得到的是: 我一直在浏览文档,找不到任何东西。我试过了: 但是这些都不起作用(我在最后一个中意识到,语法是在创建组后进行聚合的)。 问题答案: 方法1:使

  • 我有一个带有几列的。其中一列包含使用货币的符号,例如欧元或美元符号。另一列包含预算值。例如,在一行中,它可能意味着5000欧元的预算,而在下一行中,它可能意味着2000美元的预算。 在熊猫我想添加一个额外的列到我的DataFrame,正常化的欧元预算。所以基本上,对于每一行,如果货币列中的符号是欧元符号,新列中的值应该是预算列中的值*1,新列中的值应该是预算列的值*0.78125如果货币栏中的符号

  • 问题内容: 在Pandas数据框上进行分组的最佳方法是什么,但要从该分组中排除一些列呢?例如我有以下数据框: 我想对“国家”和“项目代码”列进行分组,并且仅计算Y1961,Y1962和Y1963列下的行总和。结果数据框应如下所示: 现在我正在这样做: 但是,这也会将Item_Code列中的值相加。有什么方法可以指定要包括在操作中的列和要排除的列? 问题答案: 您可以选择分组依据的列: 请注意,传递