Python 如何通过使用pandas查找另一个数据帧在数据帧列中创建列表?

Python 如何通过使用pandas查找另一个数据帧在数据帧列中创建列表?,python,pandas,list,dataframe,Python,Pandas,List,Dataframe,我有一个名为df的pandas的DataFrame,它有多个列(下面仅显示3个)和90000行: Key Date Rating 0 123abc 08/19/2015 A 1 456def 04/23/2013 B- 2 123abc 06/10/2012 C 3 789ghi 01/04/2017 B . . . . .

我有一个名为
df
的pandas的
DataFrame
,它有多个列(下面仅显示3个)和90000行:

        Key        Date     Rating
0      123abc   08/19/2015    A
1      456def   04/23/2013    B-
2      123abc   06/10/2012    C
3      789ghi   01/04/2017    B
.        .           .        .
.        .           .        .
90000  999zzz   12/12/2012    D
我想创建一个单独的
数据框
df_ratings
,它有两列:
评级列表
。在
df_评级
中,
列需要是唯一的,
评级列表
列应该包含在
df
中针对该
显示的所有
评级

        Key       Rating List
0      123abc     ['A', 'C']
1      456def       ['B-']
2      789ghi     ['B', 'D']
.        .            .
.        .            .
30000  999zzz   ['A', 'C+', 'D']
到目前为止,我采用的方法是:

df_zip = list(zip(df['Key'], df['Rating']))

def dfRatingsList(row):
    rating = []
    for x, y in df_zip:
        if row['Key'] == x:
            rating.append(y)
    return rating

df_ratings = pd.DataFrame(df['Key'].unique(), columns=['Key'])
df_ratings = df_ratings.fillna('NULL')
df_ratings['Rating List'] = df_ratings.apply(dfRatingsList, axis=1)
鉴于我的数据集的大小,这需要几个小时才能运行。如何加快此过程/改进代码?

试试以下方法:

df = df.groupby(by=['Key'], as_index=False).agg({'Rating': list})
print(df)

      Key        Rating
0  123abc  [A, A, A, A]
1  123def           [C]
2  456def          [B-]
3  789ghi           [B]
4  999zzz           [D]

这里有一个很好的答案: