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]
这里有一个很好的答案: