Python 获取列表的前两个值

Python 获取列表的前两个值,python,pandas,Python,Pandas,在下面的数据框中,我有一个值列表,如何从列表中重复前2个值 数据帧: user pro A [AA,AA,AA,BB,CC,AA,AA,CC,CC,BB] B [AA, BB, EE,BB,BB,EE,AA,CC,BB,EE] C [EE,EE,EE,CC,CC,CC,CC,DD,DD,AA] D [DD,AA,AA,AA,AA,AA,BB,BB,BB] 预期产出: A [AA,CC] B [BB,EE] C [CC,EE] D [AA,BB] 使用:

在下面的数据框中,我有一个值列表,如何从列表中重复前2个值

数据帧:

user    pro
A   [AA,AA,AA,BB,CC,AA,AA,CC,CC,BB]
B   [AA, BB, EE,BB,BB,EE,AA,CC,BB,EE]
C   [EE,EE,EE,CC,CC,CC,CC,DD,DD,AA]
D   [DD,AA,AA,AA,AA,AA,BB,BB,BB]
预期产出:

A   [AA,CC]
B   [BB,EE]
C   [CC,EE]
D   [AA,BB]
使用:

谢谢@jpp:

df['common'] = [list(zip(*d.most_common(2)))[0] for d in df['pro'].map(Counter)]
谢谢@cᴏʟᴅᴘᴇᴇᴅ:

df['common'] = df.pro.map(lambda x: [k for k, v in Counter(x).most_common(2)])
不知道我想到了:

from collections import Counter
df['result'] = df['pro'].apply(lambda x: [i[0] for i in sorted(Counter(x).items(), key=lambda x: -x[1])[:2]])

你在使用pandas吗?是的,我在使用pandas替代语法(如果你在做列表理解,你可能不想
apply
df['common']=[list(zip(*d.most_common(2))[0]表示df['pro'].map(Counter)]
你可以将这两种语法结合起来,然后做
df.pro.map(lambda x:[k表示k,v表示k表示k,v表示计数器(x.)中的v表示最常见(2)])
from collections import Counter
df['result'] = df['pro'].apply(lambda x: [i[0] for i in sorted(Counter(x).items(), key=lambda x: -x[1])[:2]])