У меня есть DataFrame
из pandas с именем df
, который имеет несколько столбцов (показаны только 3 ниже) и 90 000 строк:
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
Я хочу создать отдельный DataFrame
, df_ratings
, в котором есть два столбца: Key
и Rating List
. В df_ratings
столбец Key
должен быть уникальным, а столбец Rating List
должен содержать список всех Ratings
, которые появляются напротив этого Key
в 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)
Учитывая размер моего набора данных, это занимает несколько часов. Как я могу ускорить этот процесс / улучшить свой код?