我发现这个问题很容易写出来,但很难应用于我的熊猫数据帧。 当搜索任何“唯一值”和“列表”时,我只得到在列表中获取唯一值的答案。你知道吗
有一个具有双for循环的蛮力解,但必须有一个比n^2更快的解。你知道吗
我有一个包含两列的数据框:Name和Likes Food。你知道吗
作为输出,我希望为每个唯一名称提供一个独特的Likes食物值列表。你知道吗
数据帧df示例
Index Name Likes Food
0 Tim Pizza
1 Marie Pizza
2 Tim Pasta
3 Tim Pizza
4 John Pizza
5 Amy Pizza
6 Amy Sweet Potatoes
7 Marie Sushi
8 Tim Sushi
我知道如何根据喜欢的食物的独特数量进行聚合和分组:
df.groupby( by='Name', as_index=False ).agg( {'Likes Food': pandas.Series.nunique} )
df.sort_values(by='Likes Food', ascending=False)
df.reset_index( drop=True )
>>>
Index Name Likes Food
0 Tim 3
1 Marie 2
2 Amy 2
3 John 1
但鉴于此,数据框中每个名称的食物是什么?为了可读性,以列表的形式表达是很有意义的。列表排序并不重要(而且很容易修复)。你知道吗
示例输出
<code here>
>>>
Index Name Likes Food Food List
0 Tim 3 [Pizza, Pasta, Sushi]
1 Marie 2 [Pizza, Sushi]
2 Amy 2 [Pizza, Sweet Potatoes]
3 John 1 [Pizza]
要同时对这两列进行排序,请尝试以下操作:
要获得没有计数的输出,只需尝试unique
此外,还可以使用named aggregation
相关问题 更多 >
编程相关推荐