我想将用户交易汇总到熊猫列表中。我不知道如何制作一个包含多个字段的列表。例如,
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列中的值相加。有什么方法可以指定要包括在操作中的列和要排除的列? 问题答案: 您可以选择分组依据的列: 请注意,传递